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

时间:2015-04-07 13:18:42

标签: c# slimdx

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

ShaderResourceView.FromFile(_device, imagepath);

它将图像加载到背景中,但它会拉伸两个尺寸而不考虑纵横比。有没有办法将图像加载到背景中并保留纵横比?

1 个答案:

答案 0 :(得分:0)

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

SO上的现有帖子使图像适合指定大小,然后用空格填充任何额外空间并创建新图像。链接:https://stackoverflow.com/a/2001462/978622

另一篇文章展示了如何轻松地从Image转换为bytearray,这是ShaderResourceView可以创建着色器的类型之一。链接:https://stackoverflow.com/a/3801289/978622

我的代码将所有内容放在一起:

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