生成的图片,每次窗口刷新的时候,都会闪烁。我使用了“双缓冲” 还是闪烁,我不知道代码哪里错了,等待指教Image *m_pImage = Image::FromFile(_T("D:\\DSC01972.JPG"),FALSE);void Mypic::OnPaint()
{ CPaintDC dc(this);
if (imgok)
{
CRect rcClient;
GetClientRect(&rcClient); Bitmap memoryBitmap(rcClient.Width(), rcClient.Height()); Graphics *memoryGraphics = Graphics::FromImage(&memoryBitmap); //内存中的图像 memoryGraphics->DrawImage(m_pImage, rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height()); delete memoryGraphics; Graphics graphics(dc);
graphics.DrawImage(&memoryBitmap, rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height()); }
}
{ CPaintDC dc(this);
if (imgok)
{
CRect rcClient;
GetClientRect(&rcClient); Bitmap memoryBitmap(rcClient.Width(), rcClient.Height()); Graphics *memoryGraphics = Graphics::FromImage(&memoryBitmap); //内存中的图像 memoryGraphics->DrawImage(m_pImage, rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height()); delete memoryGraphics; Graphics graphics(dc);
graphics.DrawImage(&memoryBitmap, rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height()); }
}
{
return TRUE;
}重载了,不行的,还是闪烁
http://www.codeproject.com/KB/docview/McCZoomView.aspx
可是 CIMAGE 这个东西,好像无法画真彩的位图,画出来的东西,明显失真。
{
// get client rectangle
CRect rcClient;
GetClientRect(&rcClient); // get image rectangle
CRect rcImage(0,0,500,500);
//GetImageRect(rcImage); // create clipping region
CRgn clipRgn;
clipRgn.CreateRectRgnIndirect(&rcClient);
pDC->SelectClipRgn(&clipRgn);
pDC->ExcludeClipRect(&rcImage); CBrush brush(RGB(255,255,255)); // 白色
pDC->FillRect(&rcClient, &brush); pDC->SelectClipRgn(NULL); return TRUE;
// return CScrollView::OnEraseBkgnd(pDC);
}有问题吗?