|
问一个windowsmobile 下用c#实现双缓冲的效率问题,兼bitblt用法的讨论
[复制链接]
把所有的要画的元素都事先画在了一个bitmap里面,在onPiant()方法里面使用 e.Graphics.drawImage(bitmap,0,0)
发现速度不是一般的慢.后来查看资料,c#下面使用的是gdi+,在绘制过程中,双缓冲只能解决闪烁问题,无法解决效率问题.后来又想采用bitblt的方式,可是在以下代码会出现错误
System.Drawing.Graphics g = e.Graphics;
System.Drawing.Graphics gra = System.Drawing.Graphics.FromImage(buf);//buf就是要绘制的图了
IntPtr hdc = gra.GetHdc();//这句会报值不在预期范围内的错误
dstHdc = g.GetHdc();
BitBlt(dstHdc, 0, 0, buf.Width, buf.Height, hdc, 0, 0, DeviceScreen.RasterOperation.SRC_COPY);
g.ReleaseHdc(dstHdc);
不知道是哪里的应用有问题,该如何提高绘制的效率呢
|
|