GDI+ 动态绘制直线
来源:互联网 发布:晋华集成电路 知乎 编辑:程序博客网 时间:2024/04/29 11:15
绘制直线的语句其实非常简单:
newgraphics.DrawLine(new Pen(Color.Black), startPoint, new PointF(e.X, e.Y));
但是直接使用DrawLine函数,绘制的直线不能看到绘制过程,所以应该进行优化。
1. 我们在程序中使用一个pictureBox控件
2. 我们在主类中定义需要全局使用的变量和对象
3. 在载入程序函数中初始化对象和变量
4. 按下鼠标,开始绘图操作
5. 在鼠标移动过程中,进行绘图
5. 鼠标抬起,本次绘图结束
难点分析:
之所以在绘制直线的过程中,可以看到绘制的过程,而不会保存过程的痕迹是因为,我们在pictureBox上不断贴“含有最新绘制的直线”的图片,新的一直在覆盖原来的,所以绘图结束看到的就是最后的一副bmp。
我们深入的进行分析:
在鼠标移动事件中,首先执行了,这一步操作定义了一个img图片,这个img图片是originalImg的一个副本。
注意我们在移动鼠标的过程中,MouseMove函数不断在执行。
每次执行MouseMove函数时,都是首先做了一个originalImg的副本bmp,然后画直线,然后绘制在pictureBox上,而且是绘制在pictureBox的同一位置上。因为bmp的尺寸都是一样的,所以会不断复制原来的图片。
那么这个originalImg对象是怎么来的呢?
绘图的一开始,也就是第一次绘制图形时,originalImg是pictureBox对应的原始图片,也就是一个空白的画布。
然后,我们注意到MouseUp函数中有,这一操作使得originalImg取图像finishingImg,finishingImg记录了上次绘图的结果。
所以,在MouseMove函数中的任务可以划分为三部分:
1. 读取上次操作完成的图片
2. 在图片上绘制直线,得到新的图片
3. 把finishingImg替换为新的图片
4. 把显得图片显示到画图板,覆盖上一张
0 0
- GDI+ 动态绘制直线
- 使用GDI绘制直线
- 使用GDI绘制直线
- 在vc2010内使用GDI绘制直线
- C++ GDI+简单示例(绘制直线)
- 动态直线绘制的实现
- canvas绘制任意两点的动态直线
- 绘制直线
- 在MFC中,利用GDI绘制橡皮筋效果-直线,圆,椭圆,矩形
- Andriod在摄像头预览的场景下,动态绘制直线
- 用GDI+划直线
- GDI+画平滑直线
- gdi+(1) 画直线
- 绘制直线和直线剪切
- GDI/GDI+ 在图像上画直线
- VB6.0 【GDI+ 画直线】
- 高速直线绘制程序
- 直线绘制算法
- 在CentOS 6.X 上面安装 Python 2.7.X
- linux 下grep 正则表达式
- Java线程间通信
- 如何在Google Map上画一条直线
- 关于数码管的消隐问题
- GDI+ 动态绘制直线
- Android Studio项目应该提交哪些文件到GitHub上
- leetcode -- Unique Binary Search Trees I&II -- 重点
- hadoop完全分布式模式的安装和配置步骤
- 用sourceTree提交代码时遇到的问题
- Ubuntu时间区不对的解决方法
- android studio 安装app失败(INSTALL_PARSE_FAILED_MANIFEST_MALFORMED)
- 利用jQuery的deferred异步按顺序加载JS文件
- 错误笔记/2015.12.16