MFC改变坐标系

1.在MainFrm中的PreCreateWindow中设置默认窗口大小

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    if( !CFrameWndEx::PreCreateWindow(cs) )
        return FALSE;
    // TODO: 在此处通过修改
    //  CREATESTRUCT cs 来修改窗口类或样式
    //设置默认窗口大小为400pixel*300pixel
    cs.cx = 400;
    cs.cy = 300;
    return TRUE;
}

2.在View类中添加OnPaint()消息处理函数

void C透视投影View::OnPaint()
{
    CPaintDC dc(this); // device context for painting
                       // TODO: 在此处添加消息处理程序代码
                       // 不为绘图消息调用 CView::OnPaint()
    OnPrepareDC(&dc);
    OnDraw(&dc);
    CRect rc;    //矩形结构
    GetClientRect(&rc);     //获得窗口库视区
    int cx = rc.right;
    int cy = rc.bottom;
    dc.SetMapMode(MM_ISOTROPIC);    //X=Y
    dc.SetWindowExt(1000, 1000);    //设置逻辑窗口,默认窗口原点为(0,0)
    dc.SetViewportExt(cx, -cy);     //定义输出视口,X右Y上为正
    dc.SetViewportOrg(cx / 2, cy / 2);//定义视口原点为客户区中心
    dc.Ellipse(-500, 500, 500, -500); //绘制椭圆与客户去外接的椭圆
    //绘制水平垂直的四条半径
    dc.MoveTo(0, 0);
    dc.LineTo(500, 0);
    dc.MoveTo(0, 0);
    dc.LineTo(0, 500);
    dc.MoveTo(0, 0);
    dc.LineTo(0, -500);
    dc.MoveTo(0, 0);
    dc.LineTo(-500, 0);
}

 MM_ISOTROPIC:逻辑单位被映射为具有等刻度轴的任意单位,x轴上的一个单位被映射为

                               y轴上的一个单位。

SetWindowExt(int cx,int cy):cx表示水平方向逻辑坐标的范围

                                               cy表示垂直方向逻辑坐标的范围

                                               当改变窗口大小时,以窗口的宽度或高度较小的方向为标准

 

转载于:https://www.cnblogs.com/zuoyou151/p/10108557.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值