您好,我正在尝试绘制大约1000张图像以及10至100个矩形和椭圆形。
但是我只需要它们全部完成加载后才能在屏幕上显示(不是在加载屏幕中,而是在游戏或幻灯片中)。例如
texturegrass = MyApp.Properties.Resources.Grass
Rectangle[] rects;
recs = new Rectangle[1000]
for (int i = 0; i < rects.Length; i++)
{
g.DrawImage(texturegrass,rects[i]);
}
这是我到目前为止所做的,但是每个矩形都是由其自己绘制的,从而导致闪烁的问题。
我已经双重缓冲了该应用程序。
我尝试使用并行,但应用程序不断崩溃
我希望你们中的一个能帮助我...
## *
最佳答案
您可以使用Graphics
对象在屏幕外创建图像,然后使用屏幕的Graphics
对象在屏幕上绘制图像。
var bmp = new Bitmap(MyWidth, CMyHeight);
var gOff = Graphics.FromImage(bmp);
gOff.FillRectangle(new SolidBrush(Color.White), 0, 0, bmp.Width, bmp.Height);
texturegrass = MyApp.Properties.Resources.Grass
Rectangle[] rects = ...;
recs = new Rectangle[1000]
for (int i = 0; i < rects.Length; i++) {
gOff.DrawImage(texturegrass,rects[i]);
}
此时,您可以一次在屏幕的
bmp
上绘制Graphic
。Microsoft: How to Draw Images Off-Screen