【发布时间】:2011-03-02 16:38:16
【问题描述】:
我正在为学校项目开发 UI,我尝试了类似的方法来缩放此处列出的纹理,但问题是:
我们的项目是以 1440 x 900 的分辨率开发的,因此我制作了适合该屏幕分辨率的自己的图像。当我们不得不在课堂上演示我们的项目时,投影机只能渲染到 1024 x 768,因此屏幕上的很多东西都不见了。我添加了窗口大小调整功能,并且我正在像这样进行缩放。我有我自己的名为“button”的类,它有一个纹理 2d,以及一个由 Button(Texture2d img, float width, float height) 构造的 Vector2 位置。
我的想法是将图像的位置设置为窗口宽度和高度的可缩放百分比,因此我尝试将 img 的位置设置为 0-1 之间的数字,然后乘以窗口宽度和高度,以保持一切正常缩放。
(这段代码语法不正确,我只是想表达一下意思)
Button button = new Button(texture, .01, .01 );
int height = graphicsdevice.viewport.height * button.position.Y;
int width = graphicsdevice.viewport.width * button.position.X;
Rectangle rect = new Rectangle(0,0,width, height);
sprite.being()
sprite.draw (button.img, rect, color.white);
sprite.end
当我去绘制它并通过拖动鼠标调整窗口大小时,它最终不会缩放任何东西。如果我一开始就在不同的缓冲区高度和缓冲区宽度中硬编码,则无论分辨率如何,图像都会保持在相同的大小,除了分辨率越小,图像看起来越像素化。
设计我的程序以允许动态 texture2d 缩放的最佳方法是什么?
【问题讨论】:
-
你为什么要把窗口的size和按钮的position相乘?此外,XNA 不直接通过拖动来处理窗口大小调整,请在谷歌搜索如何在 XNA 中实现这一点。如果你只是全屏运行它应该没有问题。
标签: c# xna scaling textures texture2d