CDocument的缩放

1、CCDocumentSizeDoc 派生自 CDocument

2、CCDocumentSizeView 派生自 CView


    double currentScaleFactor = 1.0;  // 当前缩放比例,初始为1.0
    double scaleFactorBase = 1.1;    
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
BEGIN_MESSAGE_MAP(CCDocumentSizeView, CView)
    // …………
    ON_WM_MOUSEWHEEL()
END_MESSAGE_MAP()


// 缩放图形及比例
void CCDocumentSizeView::OnDraw(CDC* pDC)
{
	CCDocumentSizeDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;
	// TODO: 在此处为本机数据添加绘制代码
    pDC->Rectangle(100 * currentScaleFactor, 100 * currentScaleFactor,600 * currentScaleFactor,800 * currentScaleFactor);
    pDC->Ellipse(1000 * currentScaleFactor, 1000 * currentScaleFactor, 1600 * currentScaleFactor, 1600 * currentScaleFactor);
    pDC->MoveTo(600, 500);  // 设置直线起点坐标为(10, 10)
    pDC->LineTo(700, 800);  // 设置直线终点坐标为(100, 100)
}


// 缩放比例
BOOL CCDocumentSizeView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
    if ((nFlags & MK_CONTROL) != 0)  // 判断Ctrl键是否按下
    {
        if (zDelta > 0)
        {
            currentScaleFactor *= scaleFactorBase;  // 放大
        }
        else if (zDelta < 0)
        {
            currentScaleFactor /= scaleFactorBase;
        }
        
        Invalidate();  // 触发重绘,使缩放效果生效
        return TRUE;
    }
    return CView::OnMouseWheel(nFlags, zDelta, pt);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焰川

微信 2936729162

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值