各位大佬好,鄙人新手在做練習遇到以下問題,已繪制出幾個簡單的圖形,例如點、直線、矩形、多邊形等;如何通過OnMouseWheel訊息對所繪制圖形實作放大和縮小呢?繪圖代碼如下:
CClientDC dc(this);
CPen pen(m_nLineStyle, m_nLineWidth, m_clr);
dc.SelectObject(&pen);
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(pBrush);
switch (m_nDrawType)
{
case 1:
dc.SetPixel(point,m_clr);
break;
case 2:
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
break;
case 3:
dc.Rectangle(CRect(m_ptOrigin, point));
break;
case 4:
dc.Ellipse(CRect(m_ptOrigin, point));
break;
case 5:
if (m_CountPoint == 0)
{
m_PointFirst = point;
}
dc.SetPixel(point, m_clr);
PointArray[m_CountPoint++] = point;
m_ptEnd = point;
if (m_CountPoint >= 2)
{
dc.Polyline(PointArray, m_CountPoint);
}
break;
}
CGraph *pGraph = new CGraph(m_nDrawType, m_ptOrigin, point,m_clr,m_nLineWidth,m_nLineStyle);
m_obArray.Add(pGraph);
CView::OnLButtonUp(nFlags, point);
懇請各位大佬給個思路!!!
uj5u.com熱心網友回復:
StretchBlt()貼圖~uj5u.com熱心網友回復:
放大縮小應該用映射模式去控制uj5u.com熱心網友回復:
使用 MM_ANISOTROPIC及 pDC->SetViewportExt
uj5u.com熱心網友回復:
您好,方不方便說一下,怎么個用法
uj5u.com熱心網友回復:
百度搜相關關鍵字。
uj5u.com熱心網友回復:
1、將你的原始圖保存到一個記憶體DC中2、設定的一個縮放引數R(float或double)
3、在滾輪事件中OnMouseWheel事件中,調整R值,并發出Invaledate(。。)
4、根據R值和原始圖片引數計算圖片的目標尺寸,
5、在OnPaint或OnDraw中,根據原始尺寸和目標尺寸,呼叫StretchBlt()將圖片顯示出來
uj5u.com熱心網友回復:
http://blog.csdn.net/hyman_c/article/details/50290775uj5u.com熱心網友回復:
1、將你的原始圖保存到一個記憶體DC中
2、設定的一個縮放引數R(float或double)
3、在滾輪事件中OnMouseWheel事件中,調整R值,并發出Invaledate(。。)
4、根據R值和原始圖片引數計算圖片的目標尺寸,
5、在OnPaint或OnDraw中,根據原始尺寸和目標尺寸,呼叫StretchBlt()將圖片顯示出來
StretchBlt
這個不好,對于文字,用這個會縮放會變得模糊。我做過這功能,最好是按比例調整直線,矩形的位置,根據這個調整后的位置繪制。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/79646.html
標籤:基礎類
下一篇:關于MFC顯示主界面后通過Ribbon中登錄按鈕登錄,獲取管理員權限,然后把沒有顯示出來的停靠視窗顯示更新在原來的主界面,求教?
