在我的用户控件的油漆处理我叠代预定义的位图对象的集合,并将其绘制到客户区正是如此:

<强> 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的使用率只取得了我画面帽样品至今...

有帮助吗?

解决方案

太晚了,但可能有人还是需要的解决方案。

我已经创建小库GLGDI +有着相近GDI +语法,其在OpenTK运行: http://code.google.com/p/glgdiplus/

我不知道有关的稳定性,它通过DrawString(问题TextPrint从OpenTK)的一些问题。但是,如果你需要的性能提升你的水电费(就像我的情况关卡编辑器),它可以解决。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top