2

您好,我正在尝试绘制大约 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]);
        }

这是我到目前为止所做的,但是每个矩形都是由它自己绘制的,这导致了闪烁的问题。

我已经双缓冲了应用程序。我尝试使用并行,但应用程序不断崩溃

我希望你们中的一个可以帮助我...


##*

4

1 回答 1

3

您可以使用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.

微软:如何在屏幕外绘制图像

于 2013-06-01T12:13:37.420 回答