在我的用户控件的油漆处理我遍历预定义的位图对象的集合,并将其绘制到客户区正是如此:如何通过GDI的DrawImage(非标定)提高性能?
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的使用率只取得了我的屏幕帽样品至今...
ping back @ http://stackoverflow.com/questions/264720/gdi-graphicsdrawimage-really-slow – dankyy1 2010-08-16 11:14:16