• MFC文档(SDI)应用:画图程序(画圆、画线、鼠标事件)


    要求

    1、 在客户区输出一条顺时针45度的直线、一个正方形、一个大圆;

    2、 在客户区输出一个图标;

    3、 当按下鼠标左键时,将以鼠标坐标为圆心画直径为20个单位的小圆。


    1. 首先设置两个变量,用来保存颜色和线宽。这样就但是通过程序设置圆或者线条的颜色和宽度了。(加入在view类的构造函数中)

    COLORREF color;
    int penwidth;</span>

        2. 画45度直线的实现代码例如以下:

    CClientDC dc(this);
    CPen pen(PS_SOLID,penwidth,color);
    dc.SelectObject(&pen);
    dc.MoveTo(0,0);
    dc.LineTo(400,400);


        3. 画矩形的代码实现例如以下:
    CClientDC dc(this);
    CPen pen(PS_SOLID,penwidth,color);
    dc.SelectObject(&pen);
    dc.Rectangle(200,200,400,400);

        4. 画圆的实现代码例如以下:(凝视掉的部分为CPen填充矩形,未凝视的是用CBrush填充矩形)

    CClientDC dc(this);
    //CPen pen(PS_SOLID,penwidth,color);
    
    CBrush brush=RGB(255,255,0);
    CBrush* pbr=dc.SelectObject(&brush);
    
    dc.SelectObject(&brush);
    dc.Ellipse(300,300,400,400);
    // TODO: Add your command handler code here
    //CDC* pdc=GetDC();
    //pdc->Ellipse(300,300,400,400);
    


         5. 在客户区输出一个图标的实现代码例如以下:(提前通过编译器将程序导入)

    CDC* pdc=GetDC();
    BITMAP bitmap;
    CBitmap bm;
    bm.LoadBitmap(IDB_BITMAP1);
    bm.GetBitmap(&bitmap);
    CClientDC dc(this);
    dc.CreateCompatibleDC(pdc);
    dc.SelectObject(&bm);
    pdc->BitBlt(320,30,180,120,&dc,80,50,SRCCOPY);

          6. 当按下鼠标左键时,将以鼠标坐标为圆心画直径为20个单位的小圆,实现代码例如以下:(首先加入鼠标左键按下的响应事件,然后加入例如以下代码)

    CClientDC dc(this);
    CPen pen(PS_SOLID,penwidth,color);
    dc.SelectObject(&pen);
    dc.Ellipse(point.x-10,point.y-10,point.x+10,point.y+10);

    执行截图例如以下:



    參考博客:用MFC “菜单响应事件” 实现画图


    本程序的下载地址:点击下载   http://download.csdn.net/detail/rl529014/9498564

  • 相关阅读:
    nslookup查询结果详解
    【Web页面测试】测试点和测试用例
    【CloverETL培训】题目
    VirtualBox虚拟机网络设置(四种方式)
    Web系统测试Web安全性测试
    sqlserver字段类型详解
    详解SVN 的使用
    Javascript闭包——懂不懂由你,反正我是懂了
    Javascript的console.log()用法
    [ JS 进阶 ] test, exec, match, replace
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7344945.html
Copyright © 2020-2023  润新知