【分享】【源码】纯C#实现的mspaint增强版画图程序

问题描述

这是用C#/Winform/GDI+实现的类似mspaint的画图程序。目前实现了直线、折线、矩形、椭圆、指示箭头等规则形状,这些形状被绘制后,不会像mspaint那样,就动不了了,而是可以再次被编辑,包括旋转、缩放等。运行界面如下:对于没做过这方面程序的人,最好奇的可能就是,你用Graphics类画出一个东西后,怎么样才能重新选中、移动、编辑它?以画一个矩形为例来说明,你如果用Graphics类在一个控件(Control)上画了个矩形,并且把矩形的起点坐标、大小等数据记住,那么用户在控件上单击的时候,你就能判断出用户是否在矩形上单击了,如果是,就表示矩形被选中了,如果用户同时还移动了鼠标,那么就可以根据移动的距离重新计算矩形的起点坐标,然后重新画这个矩形。这就是ExtendedPaint用的基本方法。在内部记住各种形状(线段、矩形、椭圆等)的起点坐标、大小、颜色等等信息,在用户移动、旋转形状后,要随即更新这些信息,并重新绘制形状。其它的难点还有不少,比如用户将图像放大,并在放大的视图上绘制新的形状,这时候的处理跟未放大时有什么不同?再如撤销(后退一步)功能,怎么样放弃最后一次操作,返回之前的状态?放大和撤销这两个功能现在还为实现,但是大致思路已经有了。做这个程序有两个目的,一是把功能写全后,用我之前写的一个控件库来做其UI,然后这个画图程序作为控件库的应用例子。二是做一个实用的截图、画图程序,尽量仿mspaint来做,但要在个方面有所增强。当然了目前ExtendedPaint还很简单,没有截图功能、不能粘贴位图、不能编辑文字等等,后面会继续完善。源码下载地址:

解决方案

本帖最后由 ping3108 于 2015-08-12 11:14:10 编辑
解决方案二:

解决方案三:
推荐一下,期待后继更加完善的版本!
解决方案四:
赞一个
解决方案五:
东西不错啊,值得赞
解决方案六:

解决方案七:
赞一下,好东西
解决方案八:
好东西,谢谢分享
解决方案九:
夜深人静,看码是最好的选择,料贴一定要顶
解决方案十:
支持一下。
解决方案十一:
箭头起点跟终点在一起的话你有考虑让他消失吗?
解决方案十二:
谢谢分享!
解决方案十三:
支持原创,期待优化后的版本
解决方案十四:
引用10楼bob76012的回复:

箭头起点跟终点在一起的话你有考虑让他消失吗?

这跟画圆角矩形时出现的问题一样,正在尝试解决办法,让它变小会是更好的办法。
解决方案十五:
参考线,网格线
解决方案:

解决方案:

解决方案:

解决方案:
吓死你一个人22
解决方案:
看起来,挺好的
解决方案:
谢谢分享!@!!!!!!
解决方案:
谢谢分享!!!!!!!
解决方案:
撤销恢复貌似需要给每一步操作都要写好相反操作的代码
解决方案:
感谢楼主分享,学习了!
解决方案:

解决方案:
该回复于2015-12-31 23:42:24被版主删除
解决方案:
大神,请问微软自带的mspaint程序能实现多标签界面么?
解决方案:
我也没办法因为我要打十五个字啊
解决方案:

解决方案:
引用26楼tianya424的回复:

大神,请问微软自带的mspaint程序能实现多标签界面么?

简单的多标签界面通过TabControl来模拟就行了。
解决方案:
引用29楼ping3108的回复:

Quote: 引用26楼tianya424的回复:
大神,请问微软自带的mspaint程序能实现多标签界面么?

简单的多标签界面通过TabControl来模拟就行了。

我不懂编程呀,大神,能编出这个扩展程序么?我是百度到您这个网页的,我是win764位SP1,我觉得自带画图用来简单处理、浏览看图,是速度最快、最方便的。
解决方案:
感谢分享,谢谢大神
解决方案:
收藏学习下。
解决方案:
希望引进图层的概念就好了
解决方案:
不要越做越大,这样反而不方便了
解决方案:
引用13楼ping3108的回复:

这跟画圆角矩形时出现的问题一样,正在尝试解决办法,让它变小会是更好的办法。

对对!是变小可以限制每一个图形最小宽度不要让起点跟终点可以在一起
解决方案:
我是来学习的
解决方案:
参考paint.net源码,你会有更好的发现。
解决方案:
引用13楼ping3108的回复:

Quote: 引用10楼bob76012的回复:
箭头起点跟终点在一起的话你有考虑让他消失吗?

这跟画圆角矩形时出现的问题一样,正在尝试解决办法,让它变小会是更好的办法。

试试修改画笔Pen的属性,Limit包含这个单词的一个属性
解决方案:
Mark。。。。。。。。。。。。。
解决方案:
相当不错,做的很完善
解决方案:
必须说,很好!!!!!!!
解决方案:

解决方案:

解决方案:

解决方案:
该回复于2016-01-04 00:01:24被版主删除
解决方案:
谢谢楼主分享!!!
解决方案:

解决方案:
看起来不错,加油。。。。

时间: 2024-08-31 04:36:57

【分享】【源码】纯C#实现的mspaint增强版画图程序的相关文章

分享我写的PHP文法分析的源码

最近尝试做了文法分析的东东,问题较多. 请提建议.代码放不下,分两页. 下载地址 http://download.csdn.net/detail/xuzuning/4529066 PHP code include 'ttrie.php'; class Rule extends TTrie { public $rule = array(); public $savematch = 0; function __construct($s='') { $this->set( array( ' ' =>

本人自用的global.js库源码分享

 这篇文章主要介绍了本人自用的global.js库源码分享,源码中包含常用WEB操作,如命名空间.DOM操作.数据判断.Cookie操作等功能,需要的朋友可以参考下     ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

Linux软件安装:源码与Tarball

一.开放源码的软件安装与升级简介 1.开放源码.编译程序与执行文件 开放源码:就是程序代码(写满了程序代码的纯文本文件): 编译程序:将程序代码与函数库做链接,并翻译成机器看得懂的语言: 可执行文件:机器看得懂的二进制执行文件. 图示三者关系: 2.函数库 函数库:类似子程序的角色,可以被调用来执行的一段功能函数. 图示外部动态函数库的调用情况: ·Linux内核提供了相当多的函数库来给硬件开发者利用(系统调用): ·由上面的图示可知识,硬件开发者可通过调用内核函数库来开发出与硬件特性相关的产品

与派WebMAIL-RTC-MEET-OA-EIP-CMS(邮局-实时通讯-视频会议-办公自动化-信息门户-内容管理)下载源码www.yupai.net

问题描述 与派办公技术支持网技术支持网http://www.yupai.net(WebMAIL-RTC-MEET-OA-EIP邮局-实时通讯-视频会议-办公自动化-信息门户)基于WindowsServer.ActiveDirectory.ExchangeServer.SharepointServer.CommunicationsServer.LiveMeeting技术,致力于办公自动化系统OA.实时通讯RTC.视频会议MEET.工作流WORKFLOW.企业邮局MAIL.企业信息门户EIP.内容管

与派网络专业提供Exchange产品开发和技术服务|技术文章|资源下载|源码提供www.yupai.net

问题描述 与派办公技术支持网技术支持网http://www.yupai.net(WebMAIL-RTC-MEET-OA-EIP邮局-实时通讯-视频会议-办公自动化-信息门户)基于WindowsServer.ActiveDirectory.ExchangeServer.SharepointServer.CommunicationsServer.LiveMeeting技术,致力于办公自动化系统OA.实时通讯RTC.视频会议MEET.工作流WORKFLOW.企业邮局MAIL.企业信息门户EIP.内容管

与派邮局-实时通讯-视频会议-办公自动化-信息门户-内容管理下载源码www.yupai.net

问题描述 与派办公技术支持网技术支持网http://www.yupai.net(WebMAIL-RTC-MEET-OA-EIP邮局-实时通讯-视频会议-办公自动化-信息门户)基于WindowsServer.ActiveDirectory.ExchangeServer.SharepointServer.CommunicationsServer.LiveMeeting技术,致力于办公自动化系统OA.实时通讯RTC.视频会议MEET.工作流WORKFLOW.企业邮局MAIL.企业信息门户EIP.内容管

推荐与派WebMAIL-RTC-MEET-OA-EIP-CMS下载源码www.yupai.net

问题描述 与派办公技术支持网技术支持网http://www.yupai.net(WebMAIL-RTC-MEET-OA-EIP邮局-实时通讯-视频会议-办公自动化-信息门户)基于WindowsServer.ActiveDirectory.ExchangeServer.SharepointServer.CommunicationsServer.LiveMeeting技术,致力于办公自动化系统OA.实时通讯RTC.视频会议MEET.工作流WORKFLOW.企业邮局MAIL.企业信息门户EIP.内容管

Spring源码解析——如何阅读源码(转)

  最近没什么实质性的工作,正好有点时间,就想学学别人的代码.也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想. 手码不易,转载请注明:xingoo 这篇博文你可以了解到: 1 Spring jar包以及源码使用 2 简单的spring运行示例 3 利用断点调试程序,如何快速的阅读程序[快捷键等的使用] 这次阅读的源码比较老了,是3.0.5版本的,由于正好手头有这个版本的源码,而且平时基本上也是用的这个版本Spring,因此后文的分析也都是

Java BufferedWriter BufferedReader 源码分析_java

一:BufferedWriter  1.类功能简介:         BufferedWriter.缓存字符输出流.他的功能是为传入的底层字符输出流提供缓存功能.同样当使用底层字符输出流向目的地中写入字符或者字符数组时.每写入一次就要打开一次到目的地的连接.这样频繁的访问不断效率底下.也有可能会对存储介质造成一定的破坏.比如当我们向磁盘中不断的写入字节时.夸张一点.将一个非常大单位是G的字节数据写入到磁盘的指定文件中的.没写入一个字节就要打开一次到这个磁盘的通道.这个结果无疑是恐怖的.而当我们使