微软的画图程序中画直线时,会有画线提示,形象的说就像“橡皮筋”一样,在未最终确定直线的长度和角度前都会有一根类似“橡皮筋”的直线,便于客户可以方便的画出理想的直线,具体实现方法如下:

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
 m_bDraw = true;
 m_ptOrigin = point;
 m_ptEnd = point;
 CView::OnLButtonDown(nFlags, point);
}

void CDrawView::OnMouseMove(UINT nFlags, CPoint point)
{
 if(m_bDraw)
 {
  CClientDC dc(this);
  dc.SetROP2(R2_NOT);     //1
  dc.MoveTo(m_ptOrigin);  //2
  dc.LineTo(m_ptEnd);    //3
  m_ptEnd = point;
  dc.MoveTo(m_ptOrigin);
  dc.LineTo(m_ptEnd);
 }
 CView::OnMouseMove(nFlags, point);
}

具体原理是,m_ptOrigin为起始坐标点,m_ptEnd不断的记录终端坐标点,这里假定客户区是白色的,在鼠标移动时,1句是将绘图的模式设成像素色为屏幕颜色的反色,注意这时的m_ptEnd为上一次的鼠标移动的终点,上次那条线颜色为黑色,通过1、2、3句将上次的那条线的像素色黑色变成白色和客户区颜色相同,后面三句才最终画出在现在这个坐标终点下的黑色直线。不断往复。(其实这个方法虽然很普遍,但是很不实用)

直线的“橡皮筋”画法相关推荐

  1. 两条线段相切弧_两条直线间的圆弧连接

    教学重点 两条直线间圆弧连接的步骤. 教学难点 如何确定连接圆弧的圆心. 学情分析 1 .对"圆弧连接"定义里 "光滑连接"的理解有些模糊. 2 .对作图时要求 ...

  2. 6种不同画法画平行线_平行线的10种画法(什么叫平行线)

    . 1.趋势线:趋势线分快速.中速.慢速,趋势的画法为:上升(下降)趋势线是以向上(下)走势中的低点(高点)与低点(高点)的连线.其中时间跨度越长所构成的支撑作用也越强,而趋势线与K线相交的点位越多, ...

  3. HTML怎么在矩形上画直线,【绘制】HTML5 Canvas 绘画画板,实现鼠标画线条,画矩形或选区(图文、示例)...

    个人处女做<Canvas系列教程>在个人Github上正在连载更新,但愿能获得您的关注和支持,让我有更多的动力进行创做.html 教程介绍.教程目录等能在README里查阅.git 目录函 ...

  4. 6种不同画法画平行线_[平行线的画法]平行线的画法

    篇一 : 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎 ...

  5. QT的QRubberBand类的使用

    详细说明 QRubberBand类提供可以指示选择或边界的矩形或直线. 橡皮筋通常用于显示新的边界区域(例如在QSplitter或要取消对接的QDockWidget中).从历史上讲,这是使用QPain ...

  6. html文本框自动赋值,js给文本框赋值 value与innerHTML

    赋值操作: document.getElementById("testId").value="hello"; value与innerHTML的区别 上面的val ...

  7. 【绘制】HTML5 Canvas 绘画画板,实现鼠标画线条,画矩形或选区(图文、示例)

    我的处女作<Canvas系列教程>在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作. 教程介绍.教程目录等能在README里查阅. 传送门:https: ...

  8. c语言计算机图形来画八分画圆,【计算机图形学】基本图形元素:圆的生成算法...

    08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de ...

  9. css3 如何动态画一条直线_素描基础学习课:素描长直线的画法!把直线画直的关键!...

    作为一个毫无经验,初学素描的新手,如何才能把直线画直,是几乎每个学员都会遇到的问题.要画好素描直线,一定要掌握一定的技巧,学会了方法,往往事半功倍. 素描入门,如何画直线? 画直线之前,有时候我们会认 ...

最新文章

  1. .net使用websocket
  2. 网站在收录后还需要做什么?
  3. Angular 4 辅助路由
  4. 创建squashfs.img文件挂载失败
  5. jenkins 下载插件 一直失败_Jenkins 配置国内插件更新源
  6. Ansible Playbook核心元素以及组件
  7. 九十六、轻松搞定Python中的PPT办公自动化系列
  8. QT的QMediaPlayer类的使用
  9. chrome应用程序无法启动因为并行配置不正确_Win8打不开软件提示并行配置不正确的解决方法...
  10. SqlBulkCopy(大数据量拷贝)
  11. android网上书城管理源代码,网上书店管理系统(附程序源代码).doc
  12. 北航计算机学院考研专硕,北京航空航天大学计算机学院2020考研拟录取及未录取名单...
  13. 安卓手机状态栏显示秒_让安卓手机上方状态栏时间显示精确到秒方法
  14. 【BH区块链项目热点问答】加拿大石油公司利用废弃天然气为挖掘BTC提供动力。你怎么看?...
  15. 【kubernetes】k8s使用客户端连接haproxy访问高可用集群流程详细说明【使用kubeconfig连接haproxy】【kubeconfig配置全部流程】
  16. vuex入门到实战——实现一个todoList待办清单【学习记录】
  17. 已知由单链表表示的线性表中含有三类字符(数字,字母和其他字符)试编写算法来构造三个循环链表,使每个表中只含某一类字符,且利用原表中的结点空间作为这三个表的结点空间,头结点可另辟空间。
  18. 离散数学蕴含等值式前件为假命题为真的理解
  19. 百练4124:海贼王之伟大航路(状压DP)
  20. 华为eNSP配置防火墙进入web界面

热门文章

  1. 用友、金蝶、神州数码ERP的优势、劣势?
  2. CMOS放大器的频率特性--视频节选
  3. 树莓派 ubuntu 远程控制
  4. 解决如何为扫描件图片PDF添加页眉页脚页码日期的问题
  5. 镭速-跨国车企数据高速、安全跨境传输解决方案
  6. 品牌营销 | 学习如何最大限度地发挥品牌营销的作用
  7. 苹果屏幕上的小圆点_原来苹果手机轻点两下就能截屏,黑科技十足,我也是才发现...
  8. 一次IBM X86服务器的磁盘故障更换过程
  9. [个人心得] 关于TM影像各波段组合的简介[转]
  10. 主席树(POJ-2104、HDU-2665)