我正在尝试为我的应用实现放大功能。 我的想法是当我选择放大时,图形应该水平扩展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();
}
当我运行它时,我可以让窗口正确地绘制图形的一半,并且滚动条仅显示图形的一半。但是当我尝试滚动它时,它会回到原始位置(左下角),而图形的另一半则不会显示出来。
答案 0 :(得分:0)
两个功能中的参数不同。这可能是问题的第一个原因。 你可以把想要的代码叫做OnToolsZoomin吗?它是通过WM_VSCROLL还是WM_HSCROLL消息处理的? 你的函数是OnToolsZoomin吗? 滚动条是否已正确初始化(滚动范围)?