我正在开发一套用于在XNA中创建游戏的应用程序。使用Graphics.drawImage我可以轻松地从XNA texture2D对象中绘制预览图像。
每个对象,例如字符,地图等,由零件列表组成,每个零件存储诸如位置旋转和纹理源之类的信息。下一步是渲染整个对象的预览,而不仅仅是一个部分。
我该怎么做?我可以将Graphics.drawImage视为常规的XNA绘制调用,并通过循环遍历List并将每个项目绘制到位图和按顺序的位图来渲染我想要的位图对象的部分吗?或者每个graphics.DrawImage调用是否会破坏它绘制的位图?
答案 0 :(得分:2)
这是你要找的吗?
Bitmap bmp = new Bitmap(100, 100);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(Properties.Resources.Foo);
Bitmap bar = Properties.Resources.Bar;
bar.MakeTransparent(bar.GetPixel(0, 0));
g.DrawImage(bar);
只要图像是透明的(你可以在运行时调用Bitmap.MakeTransparent()),你可以通过多次调用DrawImage来分层,而不会“破坏”位图。
答案 1 :(得分:0)
听起来很对。我有一组Texture2D xna对象,每个对象都存储它的文件路径。使用Image.FromFile()我使用此路径创建Image对象然后我需要使用Graphics.DrawImage()和描述该部分的Rectangle绘制图像的部分到Graphics对象。从这里我可以按照Back to Front顺序进行多个g.DrawImage()调用。
由于Texture2D和Image就此而言,可以处理透明度,而我的tex源都是PNG格式,我假设我可以使用Image类而不是Bitmap类并保存MakeTransparent调用,对吗?