我想绘制2D精灵。
这是奇怪的事情:如果我Sprite.Draw2D
首次超载:
using (Sprite Spr = new Sprite(Gfx))
{
Spr.Begin(SpriteFlags.AlphaBlend);
int SprY = Gfx.PresentationParameters.BackBufferHeight/2;
int SprX = Gfx.PresentationParameters.BackBufferWidth/2;
Spr.Draw2D(Tex, new Point(0,0), 0.0f, new Point(SprX,SprY), Color.White);
Spr.End();
while (!Spr.Disposed)
Spr.Dispose();
}
它位于128,128。
但我想缩小我的形象。
所以我使用Sprite.Draw2D
的第三次重载:
Spr.Draw2D(Tex, new Rectangle(0, 0, 1024, 1024), new Rectangle(0,0,256,256), new Point(SprX,SprY) , Color.White);
然后,它吸引到我们的位置(但是正确的大小)。
我发现在第3次重载= 1280的情况下屏幕宽度。
无论PresentationParameters
还是ViewPort
大小。即使在其他机器上它也是1280,中心将是640。
我尝试调试Gfx(设备)对象并查看是否有任何“1280”数字的出现,并且它出现在Gfx.DisplayMode
中。不幸的是,我无法设置此参数,因为MSDN说“Device.SetDisplayMode已被弃用”。我测试“游戏”的两台计算机之间的DisplayMode.Width是不同的。
可能我错过了一些真正巨大的东西并堆叠在上面。
顺便说一下,如果这很重要,我可以使用"C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0"
中的DirectX库。