在前面一篇文章中,我介绍了一个Picture Box控件,看这里!

最近我在一个小项目中,使用了这个控件,当然,是做过更改后的,主要修正了一个Bug,然后增加了三个函数,用于在图片上面画一些矩形框和标记。

主要的更改是对Copy功能的更改,放大功能没有做更改。解决方案中增加了一个Winform项目示例。

修正版的源代码下载地址: 源代码 Source Code

现在项目示例截图如下:

图中,蓝色框是增加的第一个功能。

绿色虚线框是第二个功能。

图像中的lable是第三个功能。

位置大小信息是增加的一个数据访问。

增加的三个函数分别如下:

1. 在画布上面增加“已存在”矩形框

/// <summary>
/// the existence rectangle list
/// </summary>
public List<Rectangle> existRectangle;
private void DrawExistRectangle(Graphics g)
{Pen drawRectanglesPen = new Pen(Color.Blue, 2.0F);foreach (Rectangle rect in existRectangle){g.DrawRectangle(drawRectanglesPen, rect);}drawRectanglesPen.Dispose();
}
 

2.画一个需要标记的矩形

// a 'star' rectangle, means that rectangle marked.
private Rectangle starRectangle;
/// <summary>
/// a marked rectangle
/// </summary>
public Rectangle StarRectangle
{get { return starRectangle; }set { starRectangle = value; }
}private void DrawMarkedRectangle(Graphics g)
{            Pen drawMarkedRectPen = new Pen(Color.Green, 2.0F);drawMarkedRectPen.DashStyle = DashStyle.Dash;g.DrawRectangle(drawMarkedRectPen, starRectangle);drawMarkedRectPen.Dispose();
}
 

3.画标签(带位置参数)

在这个实现中,我新建了一个类LableType

/// <summary>
/// LableType indicate a lable with a location information
/// </summary>
public class LableType
{
private string lableString;/// <summary>/// lable content/// </summary>public string LableString{get { return lableString; }set { lableString = value; }}private Point locationInfo;/// <summary>/// lable's location information/// </summary>public Point LocationInfo{get { return locationInfo; }set { locationInfo = value; }}/// <summary>/// LableType indicate a lable with a location information/// </summary>/// <param name="lable">lable content</param>/// <param name="point">lable location</param>public LableType(string lable, Point point){this.lableString = lable;this.locationInfo = point;}
}
/// <summary>
/// the lable list need to draw
/// </summary>
public List<LableType> lableList;private void DrawLableList(Graphics g)
{foreach (LableType lt in lableList){g.DrawString(lt.LableString, new Font("System", 18F, GraphicsUnit.Pixel), new SolidBrush(Color.DarkBlue), lt.LocationInfo.X, lt.LocationInfo.Y);}
}    
    

4.修正Bug:

先前代码中,我发现的一个Bug,已修正

代码如下:
在DragOptions.Copy 项中,先前没有dragWindowSave = dragWindow; 如果默认选择DragOptions的属性为Copy(在属性栏中选择),
则在实际运行中会出现NullException,后来发现是作者没有将dragWindow赋值给dragWindowSave.
switch (_dragOptions)
{case DragOptions.Prompt :dragWindowSave = dragWindow;cmnuPrompt.Show(this, dragEnd);break;case DragOptions.Copy :dragWindowSave = dragWindow;Copy();break;case DragOptions.Zoom :Zoom();
break;
}
 

5.增加DragWindow

增加这样一个拖拉框的属性,可供外部代码访问
// Holds the size and location of the drag window
private Rectangle dragWindow;
public Rectangle DragWindow
{get { return dragWindow; }set { dragWindow = value; }
}

转载于:https://www.cnblogs.com/fangfan4060/archive/2009/08/06/1540551.html

Picture Box(1) 修正版相关推荐

  1. 快车 FlashGet 3.1 修正版(1057)

    快车 FlashGet 3.1 修正版(1057) SM发布于 2009-06-25 23:43:23| 2326 次阅读 字体:大 小 打印预览 感谢VxuE的投递 快车(FlashGet)是互联网 ...

  2. 计算机aoa综合题word,AOA-word综合题操作步骤(修正版)

    <AOA-word综合题操作步骤(修正版)>由会员分享,可在线阅读,更多相关<AOA-word综合题操作步骤(修正版)(7页珍藏版)>请在人人文库网上搜索. 1.AOA-WOR ...

  3. Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件

    之前一直有关注过Jquery.LazyLoad.js这个特效,但一直没有用,这几天研究了一下,并应用于实际中,对网站SEO方面没有什么帮助,不过可以节省一些流量,对于大网站来说显的尤为重要,至于节省了 ...

  4. 刷新系统托盘(清除死掉的图标)修正版

    刷新系统托盘(清除死掉的图标)修正版 2009-08-06 18:50:06|  分类: Delphi |  标签: |字号大中小 订阅 type  TOSVersion = (osUnknown, ...

  5. 通用客户端表单验证函数修正版

    转载:PHPSOHO 通用客户端表单验证函数修正版 主要内容: 一.用法简介: 二.类型定义: 三.程序文件: 历史: 2005.2.25 修改为通用客户端表单验证函数修正版 2004.12.21  ...

  6. 蓝桥杯-c++_ch04_02_修正版(java)

    算法提高 c++_ch04_02_修正版 时间限制:1.0s 内存限制:256.0MB[题目描述]实现一个时间类Time.将小时,分钟和秒存储为int型成员变量.要求该类中包含一个构造函数,访问用 ...

  7. 漫画:什么是二叉堆?(修正版)

    转载自  漫画:什么是二叉堆?(修正版) 什么是二叉堆? 二叉堆本质上是一种完全二叉树,它分为两个类型: 1.最大堆 2.最小堆 什么是最大堆呢?最大堆任何一个父节点的值,都大于等于它左右孩子节点的值 ...

  8. python123九宫格输入法_《啊哈C语言-2016最新修正版》.pdf

    <啊哈C语言-2016最新修正版>.pdf | 啊哈C语言| 后续内容还请关注 [ ] [ ] [[ 网站首页 ]] [ ] [ ] [[ 网站问答 ]] /qa [ ] [ ] [[ 新 ...

  9. 通用客户端表单验证函数修正版(zz)

    通用客户端表单验证函数修正版 主要内容: 一.用法简介: 二.类型定义: 三.程序文件: 历史: 2005.2.25  修改为通用客户端表单验证函数修正版 2004.12.21     1.对整数的范 ...

最新文章

  1. Cygwin复制,粘贴 直接用鼠标在黑框上选区即可,选区结束就已经复制了。cygwin里面Ctrl+V是不能粘贴的,用Shfit+ Insert(键盘上下左右方向键的上面) Cygwin 下切换目
  2. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第51篇]什么是基于ID的加密的安全模型,描述一个IBE方案
  3. opencv2 取二进制数据_百亿数据量下,掌握这些Redis技巧你就能Hold全场
  4. Spring Tools 4 for Eclipse 下载
  5. 有关UIView、subview的几个基础知识点-IOS开发 (实例)
  6. 7.3(java学习笔记)网络编程之UDP
  7. php设置ip,php curl如何设置ip
  8. DMTF Redfish 概念介绍
  9. 应用系统云原生架构衡量指标
  10. C6678多核DSP——CMD文件介绍
  11. 帝国军师--约森·梅尔沃德(微软技术总监)
  12. 阿里云CDN防盗链设置方法
  13. VSCode已经设置过为中文但变成英文的解决办法
  14. 负对数似然 交叉熵 mse mae的区别
  15. 《赢》--[美]杰克·韦尔奇
  16. 逆水寒能不能网页预约服务器,逆水寒春暖花开服务器怎么预约?春暖花开服务器预约方法介绍...
  17. 七夕节送女朋友啥礼物好?七夕情人节礼物推荐
  18. jupyterlab下载遇到的问题及解决方案
  19. Go 如何使用session
  20. 11.16模拟赛总结

热门文章

  1. MS SQL SERVER2005更新触发器
  2. 转载《Python与开源GIS教程》随书源码网址
  3. SQL那些事儿(八)--oracle用户、表、表空间之间的关系
  4. .net上传大文件不成功
  5. 为什么刹车热了会失灵_刹车油只要不缺,没必要更换,真的是这样吗?
  6. Spark重要概念提出时间戳和原因
  7. 地理在计算机中的应用,计算机在地理教学中应用形式之一:适合于大班教学的演示型...
  8. MySQL安装目录分类_分类 安装 下的文章
  9. python中文单词_python – 如何显示中文单词,而不是unicode单词
  10. C语言解决迭代递推问题