我正在尝试为我的应用程序实现放大功能。这个想法是当我选择放大时,图形应该水平扩展 2 倍大,这样只有一半的图形会显示在窗口中,而不管窗口大小,都需要滚动才能看到另一半。
我有一个缩放因子的缩放变量。然后在 onDraw(CDC &pDC) 中:
//...set pen and others...
CRect rect;
GetClientRect(rect);
for (int x=0; x < zoomFactor*rect.Width(); x++)
//....draw the graph
然后在 onToolsZoomin() 中:
void CMyGraphView::OnToolsZoomin()
{
zoom *= 2;
CRect rect;
GetClientRect(rect);
CSize sizeTotal;
sizeTotal.cx = zoom*rect.Width();
sizeTotal.cy = 0;
SetScrollSizes(MM_TEXT, sizeTotal);
this->RedrawWindow();
}
当我运行它时,我可以让窗口正确绘制图形的一半,并显示一个滚动条,指示仅显示图形的一半。但是当我尝试滚动它时,它会回到原始位置(左下角),并且图表的另一半不会出现。