60_CAD按钮自绘、选择、移动、选择、删除

按钮自绘

步骤

    • Owner draw设置为true之后需要自己绘制按钮

    • 子类化按钮

    • 实现虚函数DrawItem
      • LPDRAWITEMSTRUCT里面有DC
      • Hdc转cdc

CDC dc;

dc.Attach(hdc);

dc.detach(hdc);

picture control显示图片控件

      • Spy++用的这个

选择

思路

鼠标点的时候画出一个多边形

CRgn::CreatePolygonRgn(LPPOINT lpPoints, int nCount. Int nMode)//点的数组,个数,填充方式

CRgn::ptInRect

鼠标按下的点有没有在这个多边形范围内

实现

给标志是否处于选择模式(int)

抽象基类虚函数判断是否选中矩形

特殊的图形类实现

视图保存当前选中的图形指针

抽象基类给选中后的图案添加一个选中后的绘图接口

图案增加选中后的画图方式

绘图的时候判断是否选中的图形;如果是绘图设置选中的图案为空

选择其它功能还原

移动

思路

鼠标按下的时候选中,拖动鼠标移动图案

移动中的坐标计算,起点和终点的偏移是一样的

实现

抽象图形基类添加一个函数移动计算两个点偏移给成员

视图类保存移动的起点位置

鼠标按下的时候保存起点修改为移动模式

鼠标移动判断是在移动还是绘图

鼠标移动的时候调用抽象基类的计算方法

鼠标移动的时候更新下一次移动的起点

鼠标弹起的时候保存终点和修改为选中模式

旋转

抽象基类函数成员增加旋转

菜单增加旋转功能

删除

从列表把选中的图案删掉

作业

  1. 完成删除

https://github.com/xkkhh/Cracking/tree/master/07CAD04

0 条评论
发表一条评论