【发布时间】:2015-04-07 13:18:42
【问题描述】:
我正在将图像加载到 ShaderResourceView 中以用作背景图像。这是我目前正在使用的:
ShaderResourceView.FromFile(_device, imagepath);
它将图像加载到背景中,但它会拉伸两个维度而不考虑纵横比。有没有办法将图像加载到背景中并保持纵横比?
【问题讨论】:
我正在将图像加载到 ShaderResourceView 中以用作背景图像。这是我目前正在使用的:
ShaderResourceView.FromFile(_device, imagepath);
它将图像加载到背景中,但它会拉伸两个维度而不考虑纵横比。有没有办法将图像加载到背景中并保持纵横比?
【问题讨论】:
理想情况下,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);
【讨论】: