使图像适合 ShaderResourceView 并保持纵横比

Fit image to ShaderResourceView and preserve aspect ratio

我正在将图像加载到 ShaderResourceView 中以用作背景图像。这是我目前正在使用的:

ShaderResourceView.FromFile(_device, imagepath);

它将图像加载到背景中,但它在不考虑宽高比的情况下拉伸了两个维度。有没有办法将图像加载到背景中并保持纵横比?

理想情况下,ShaderResourceView 会提供自动尊重图像方面的设置,但下面是次佳选项。

SO 上的现有 post 将图像调整为指定大小,然后用白色 space 填充任何额外的 space 并创建新图像。 Link:

另一个 post 展示了如何轻松地将 Image 转换为 bytearray,这是 ShaderResourceView 可以从中创建着色器的类型之一。 Link:

我的代码将它们放在一起:

var original = Image.FromFile(path);
Image resized = FixedSize(original, actualWidth, actualHeight);
var byteImage = ImageToByteArray(resized);
var srv = ShaderResourceView.FromMemory(_device, byteImage);