MFC中SetWorldTransform函数中XFORM结构体的使用

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
MFC使用贝塞尔曲线绘制椭圆,可以使用CPen和CBrush类来定义线条和填充颜色,使用CGdiObject::CreatePen和CGdiObject::CreateBrush函数创建线条和填充对象,然后使用CGdiObject::SelectObject函数选定绘制对象。绘制椭圆需要先计算出贝塞尔曲线的控制点,然后使用CPen::PolyBezier函数绘制曲线。 要旋转椭圆,可以使用CGdiObject::SetWorldTransform函数来设置世界坐标系的变换矩阵,将椭圆旋转到指定的角度。具体实现步骤如下: 1. 创建一个矩阵对象,使用CGdiObject::CreateMatrix函数创建。 2. 调用矩阵对象的Rotate函数设置旋转角度,以弧度为单位,例如: matrix.Rotate(angle * 180.0 / 3.14); 3. 调用CGdiObject::SetWorldTransform函数,将矩阵对象设置为世界坐标系的变换矩阵,例如: CDC* pDC = GetDC(); pDC->SetWorldTransform(&matrix); 4. 绘制椭圆,例如: CPen pen(PS_SOLID, 1, RGB(255, 0, 0)); CBrush brush(RGB(0, 255, 0)); CPen* pOldPen = pDC->SelectObject(&pen); CBrush* pOldBrush = pDC->SelectObject(&brush); pDC->Ellipse(10, 10, 100, 50); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); 5. 还原世界坐标系的变换矩阵,例如: pDC->SetWorldTransform(&oldMatrix); 注意,旋转椭圆之前需要保存原始的世界坐标系的变换矩阵,以便在绘制完椭圆之后还原。可以使用CGdiObject::GetWorldTransform函数获取当前的世界坐标系的变换矩阵,然后使用CGdiObject::SetWorldTransform函数还原。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值