用鼠标中键对mfc绘图开展放缩
用鼠标中键对mfc绘图进行放缩
怎么用鼠标的中键对基于单文档或者对话框的mfc所画的(用MoveTo和LineTo所画的)图像进行放大和缩小?有大神帮忙直接写一段代码,让我看一下,其中MoveTo和LineTo所画的曲线已经绘制出来了
------解决思路----------------------
WM_MOUSEWHELL消息,改变点的坐标,然后MoveTo/LineTo
------解决思路----------------------
1.响应消息
2.OnPaint里修正坐标值 其中m_ScrolPt是滚动条坐标 视图从cscrollview派生的
------解决思路----------------------
你光看代码有什么用,你得知道原理才能自己写出来啊,我推荐一个方法是把窗口上的内容保存到一个内存DC上,然后在中键消息当中用StrechBlt函数去拉伸或者压缩内存DC上的内容
------解决思路----------------------
这种做法是没有什么问题的。
怎么用鼠标的中键对基于单文档或者对话框的mfc所画的(用MoveTo和LineTo所画的)图像进行放大和缩小?有大神帮忙直接写一段代码,让我看一下,其中MoveTo和LineTo所画的曲线已经绘制出来了
------解决思路----------------------
WM_MOUSEWHELL消息,改变点的坐标,然后MoveTo/LineTo
------解决思路----------------------
1.响应消息
BOOL CCoordinateView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
// TODO: Add your message handler code here and/or call default
m_dScale += 0.05 * zDelta/ 120;
if(m_dScale <= 0.02)
{
m_dScale = 0.02;
}
if(m_dScale >= 4.0)
{
m_dScale = 4.0;
}
SetScrollSizes(MM_TEXT, CSize(nXW * m_dScale * dRatio,nYH * m_dScale * dRatio));
Invalidate();
return TRUE;/*CScrollView::OnMouseWheel(nFlags, zDelta, pt)*/;
}
2.OnPaint里修正坐标值 其中m_ScrolPt是滚动条坐标 视图从cscrollview派生的
m_pMemoryDC->MoveTo((m_PTArray.GetAt(0).x - m_ScrolPt.x) * m_dScale,
(m_PTArray.GetAt(0).y - m_ScrolPt.y) * m_dScale);
m_pMemoryDC->LineTo((m_PTArray.GetAt(i).x - m_ScrolPt.x) * m_dScale,
(m_PTArray.GetAt(i).y - m_ScrolPt.y) * m_dScale);
}
------解决思路----------------------
你光看代码有什么用,你得知道原理才能自己写出来啊,我推荐一个方法是把窗口上的内容保存到一个内存DC上,然后在中键消息当中用StrechBlt函数去拉伸或者压缩内存DC上的内容
------解决思路----------------------
这种做法是没有什么问题的。