请问一个DIB绘制的时候出现闪屏?
- C/C++ code
void CPdfViewView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo){ // TODO: 在此添加专用代码和/或调用基类 ASSERT_VALID(pDC); CPoint pViewOrg; // 初始化 DC CScrollView::OnPrepareDC(pDC, pInfo); if (!pDC->IsPrinting()) { CRect rect; GetClientRect(&rect); CSize size(GetTotalSize()); pViewOrg = pDC->GetViewportOrg(); if (rect.Width() > size.cx) pViewOrg.x = (rect.Width() - size.cx + 1) / 2; if (rect.Height() > size.cy) pViewOrg.y = (rect.Height() -size.cy + 1) /2 ; GetDocument()->GetPdf()->PanView(pViewOrg.x, pViewOrg.y); m_nPanx = pViewOrg.x; m_nPany = pViewOrg.y; }}void CPdfViewView::OnDraw(CDC* pDC){ CPdfViewDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; HDC hDC = ::GetDC(m_hWnd); SetDIBitsToDevice(hdc,m_nPanx, m_nPany, m_pImage->w, m_pImage->h,0, 0, 0, m_pImage->h, m_pImage->samples,dibinf, DIB_RGB_COLORS); pDoc->GetPdf()->BlitToHdc(hDC); ::ReleaseDC(m_hWnd, hDC);}
滚动条尺寸为 m_pImage->w, m_pImage->h,
请问下我拉动滚动条的时候,会出现闪屏,请问下这个怎么解决呀?
[解决办法]
不知道双缓冲有没有效果,可以试试看
[解决办法]
[解决办法]
[解决办法]
void CPdfViewView::OnDraw(CDC* pDC)
不是有pDC吗?(带裁剪区的)
为什么还要:
HDC hDC = ::GetDC(m_hWnd);
不带裁剪区的。