L
lizhao
Unregistered / Unconfirmed
GUEST, unregistred user!
我在绘图时屏幕闪得太历害,我想用双缓冲,可是由于我对win api不熟,
老是不对,并且还将我的NT搞死。
下面是我 paint过程 的源程序的部分内容。
BufferBitmap:=TBitmap.Create;
BufferBitmap.LoadFromFile('c:/windows/forest.bmp');
//如果不加上面的这句就根本显示不了,
//如果加上的话,就相当于把这个bitmap当底图了,可是仍旧闪烁。
BufferBitmap.Width:=width;
BufferBitmap.Height:=height;
//这里是往BufferBitmap.canvas上绘图的操作。
mdc:=CreateCompatibleDc(Canvas.Handle);
SelectObject(mdc,Bufferbitmap.handle);
bitblt(Canvas.Handle,0,0,width,height,mdc,0,0,SRCCOPY );
//上面一句是将Bitmap.canvas往我要的绘图区的Canvas上copy.
DeleteDc(mdc);
bufferbitmap.FreeImage;
老是不对,并且还将我的NT搞死。
下面是我 paint过程 的源程序的部分内容。
BufferBitmap:=TBitmap.Create;
BufferBitmap.LoadFromFile('c:/windows/forest.bmp');
//如果不加上面的这句就根本显示不了,
//如果加上的话,就相当于把这个bitmap当底图了,可是仍旧闪烁。
BufferBitmap.Width:=width;
BufferBitmap.Height:=height;
//这里是往BufferBitmap.canvas上绘图的操作。
mdc:=CreateCompatibleDc(Canvas.Handle);
SelectObject(mdc,Bufferbitmap.handle);
bitblt(Canvas.Handle,0,0,width,height,mdc,0,0,SRCCOPY );
//上面一句是将Bitmap.canvas往我要的绘图区的Canvas上copy.
DeleteDc(mdc);
bufferbitmap.FreeImage;