Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xna 自动缩放背景图像_Xna_C#_Vb.net - Fatal编程技术网

Xna 自动缩放背景图像

Xna 自动缩放背景图像,xna,c#,vb.net,Xna,C#,Vb.net,我有一张.png高清(1024x768)的背景图片。我的用户可以有不同的屏幕大小,但看起来应该总是一样的,因此: 是否可以自动将其大小缩放到中的背景大小?首先,必须将整个场景渲染到渲染目标中,然后使用矩形作为位置和大小绘制它 Rectangle dest = new Rectangle (0, 0, graphics.ViewPort.Width, graphics.ViewPort.Height); spriteBatch.Draw(RenderTarget, dest, Color.Whit

我有一张.png高清(1024x768)的背景图片。我的用户可以有不同的屏幕大小,但看起来应该总是一样的,因此:


是否可以自动将其大小缩放到中的背景大小?

首先,必须将整个场景渲染到
渲染目标中,然后使用矩形作为位置和大小绘制它

Rectangle dest = new Rectangle (0, 0, graphics.ViewPort.Width, graphics.ViewPort.Height);
spriteBatch.Draw(RenderTarget, dest, Color.White);
如果您以16:9的比例工作,而用户以4:3的比例工作,则可能会出现拉伸/挤压:

int height = (int)(graphics.ViewPort.Width * (16.0/9.0));
Rectangle dest = new Rectangle (0, graphics.ViewPort.Height -- (int)(height / 2.0), graphics.ViewPort.Width, graphics.ViewPort.Height);
spriteBatch.Draw(RenderTarget, dest, Color.White);
或一般情况下,宽度>=高度:

double aspectratio = ((double)graphics.ViewPort.Width / (double)graphics.Viewport.Height);
int height = (int)(graphics.ViewPort.Width * aspectratio;
Rectangle dest = new Rectangle(0, graphics.ViewPort.Height - (int)(height / 2.0), graphics.ViewPort.Width, height);
下面是一些独立屏幕分辨率的好例子:


是的,这肯定是可能的。你做了哪些研究?有代码显示吗?