在Windows窗体中以最快的方式在图像上绘制叠加层

时间:2009-08-17 14:54:22

标签: .net forms image-processing gdi+ direct3d

在.net中绘制图像的最快方法是什么?

我正在尝试在窗体控件中的另一个图像上绘制图像。我知道当我尝试使用循环直接绘制它时需要一个Eon。

我听过的选项是GDI +,Direct Draw或DX10。我开始使用固定大小的位图,并在将3 +叠加图层分配给表单对象之后应用它。

谢谢,

1 个答案:

答案 0 :(得分:4)

如果您的叠加层是图像(可能是带透明度的PNG图像),那么一般的技巧是从您想要绘制的图像创建一个Graphics对象,然后将其他图像渲染到它上面:

    Bitmap b1 = (Bitmap) Bitmap.FromFile("bitmap1.bmp");
    Bitmap b2 = (Bitmap)Bitmap.FromFile("bitmap2.bmp");
    Bitmap b3 = (Bitmap)Bitmap.FromFile("bitmap3.bmp");
    using (Graphics g = Graphics.FromImage(b1))
    {
        g.DrawImage(b2, new Point(0, 0));
        g.DrawImage(b3, new Point(50, 50));
    }

如果您的叠加层是绘制对象(文本,线条,形状等),那么您将创建或获取适当的画笔和笔,并使用Graphics对象将所需内容渲染到图像上。完成后,务必确保丢弃任何一次性用品。这是使用using语句最方便的。