如何通过GDI的DrawImage(非标定)提高性能?

在我的用户控件的绘制处理程序中,我迭代了一组预定义的Bitmap对象,并将它们绘制到客户区:

C#版本:

private void Control_Paint(object sender, PaintEventArgs e) {
    Graphics g = e.Graphics;
    foreach (BitmapObj bmpObj in _bitmapObjCollection) {
        g.DrawImageUnscaled(bmpObj.Bitmap, bmpObj.Location);
    }
}

VB.NET版本:

Private Sub Control_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
    Dim g As Graphics = e.Graphics

    For Each bmpObj As BitmapObj In _bitmapObjCollection
        g.DrawImageUnscaled(bmpObj.Bitmap, bmpObj.Location)
    Next
End Sub

代码工作正常,但是当十几个对象被添加到集合时开始陷入停滞状态。 我的问题是:有没有办法加快速度? 是否有可能使用Win32 bitblt函数来替换DrawImageUnscaled? 如果是的话如何?

谢谢!

注意:谷歌搜索使用BitBlt只能让我屏蔽帽样本到目前为止...


太晚了,但可能有人仍然需要解决方案。

我使用类似的GDI +语法创建了小型图书馆GLGDI +,它们在OpenTK上运行:http://code.google.com/p/glgdiplus/

我不确定稳定性,它与DrawString有一些问题(来自OpenTK的TextPrint问题)。 但是如果你的实用程序需要性能提升(比如我的情况下的关卡编辑器),它可以是解决方案。

链接地址: http://www.djcxy.com/p/8867.html

上一篇: How to increase performance over GDI's DrawImage(Unscaled)?

下一篇: Is there a way to follow redirects with command line cURL?