Flicker Free drawing
It works very similar to the description of Flicker Free example with dialog.
The main point are to overload ON_WM_ERASEBKGND()
, Invalidate the Window Area and paint in OnPaint
with the class CMemDC.
Here however one has to make sure that there is no ON_WM_ERASEBKGND()
in the Parent Dialog.
Resizing of Images
In this project the facility of CMemDC to scale the data to be shown is used:void CGraphCtrl::OnPaint() { CPaintDC dc(this); // device context for painting CRect (rc_dest); rc_dest=GetSize(); CRect (rc_source); rc_source=GetPlotDataSize(); CMemDC pDC(&dc,&rc_source, &rc_dest); // Double Buffering PlotToDC(& pDC); } CRect CGraphCtrl::GetSize() { CRect rc; GetClientRect(rc); return rc; } CRect CGraphCtrl::GetPlotDataSize() { CRect rc; rc.left=0; rc.top=0; rc.right=m_PixelNumberX; rc.bottom=m_PixelNumberY; return rc; } |