如何通过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?