直线的“橡皮筋”画法
微软的画图程序中画直线时,会有画线提示,形象的说就像“橡皮筋”一样,在未最终确定直线的长度和角度前都会有一根类似“橡皮筋”的直线,便于客户可以方便的画出理想的直线,具体实现方法如下:
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 .对"圆弧连接"定义里 "光滑连接"的理解有些模糊. 2 .对作图时要求 ...
- 6种不同画法画平行线_平行线的10种画法(什么叫平行线)
. 1.趋势线:趋势线分快速.中速.慢速,趋势的画法为:上升(下降)趋势线是以向上(下)走势中的低点(高点)与低点(高点)的连线.其中时间跨度越长所构成的支撑作用也越强,而趋势线与K线相交的点位越多, ...
- HTML怎么在矩形上画直线,【绘制】HTML5 Canvas 绘画画板,实现鼠标画线条,画矩形或选区(图文、示例)...
个人处女做<Canvas系列教程>在个人Github上正在连载更新,但愿能获得您的关注和支持,让我有更多的动力进行创做.html 教程介绍.教程目录等能在README里查阅.git 目录函 ...
- 6种不同画法画平行线_[平行线的画法]平行线的画法
篇一 : 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎 ...
- QT的QRubberBand类的使用
详细说明 QRubberBand类提供可以指示选择或边界的矩形或直线. 橡皮筋通常用于显示新的边界区域(例如在QSplitter或要取消对接的QDockWidget中).从历史上讲,这是使用QPain ...
- html文本框自动赋值,js给文本框赋值 value与innerHTML
赋值操作: document.getElementById("testId").value="hello"; value与innerHTML的区别 上面的val ...
- 【绘制】HTML5 Canvas 绘画画板,实现鼠标画线条,画矩形或选区(图文、示例)
我的处女作<Canvas系列教程>在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作. 教程介绍.教程目录等能在README里查阅. 传送门:https: ...
- c语言计算机图形来画八分画圆,【计算机图形学】基本图形元素:圆的生成算法...
08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de ...
- css3 如何动态画一条直线_素描基础学习课:素描长直线的画法!把直线画直的关键!...
作为一个毫无经验,初学素描的新手,如何才能把直线画直,是几乎每个学员都会遇到的问题.要画好素描直线,一定要掌握一定的技巧,学会了方法,往往事半功倍. 素描入门,如何画直线? 画直线之前,有时候我们会认 ...
最新文章
- .net使用websocket
- 网站在收录后还需要做什么?
- Angular 4 辅助路由
- 创建squashfs.img文件挂载失败
- jenkins 下载插件 一直失败_Jenkins 配置国内插件更新源
- Ansible Playbook核心元素以及组件
- 九十六、轻松搞定Python中的PPT办公自动化系列
- QT的QMediaPlayer类的使用
- chrome应用程序无法启动因为并行配置不正确_Win8打不开软件提示并行配置不正确的解决方法...
- SqlBulkCopy(大数据量拷贝)
- android网上书城管理源代码,网上书店管理系统(附程序源代码).doc
- 北航计算机学院考研专硕,北京航空航天大学计算机学院2020考研拟录取及未录取名单...
- 安卓手机状态栏显示秒_让安卓手机上方状态栏时间显示精确到秒方法
- 【BH区块链项目热点问答】加拿大石油公司利用废弃天然气为挖掘BTC提供动力。你怎么看?...
- 【kubernetes】k8s使用客户端连接haproxy访问高可用集群流程详细说明【使用kubeconfig连接haproxy】【kubeconfig配置全部流程】
- vuex入门到实战——实现一个todoList待办清单【学习记录】
- 已知由单链表表示的线性表中含有三类字符(数字,字母和其他字符)试编写算法来构造三个循环链表,使每个表中只含某一类字符,且利用原表中的结点空间作为这三个表的结点空间,头结点可另辟空间。
- 离散数学蕴含等值式前件为假命题为真的理解
- 百练4124:海贼王之伟大航路(状压DP)
- 华为eNSP配置防火墙进入web界面