在控件内实现简单画笔功能

/// <summary>
/// 实现窗体内简单画笔功能
/// </summary>
public class DrawClass
{
private Color __Color = new Color();
private Point __Start = new Point();
private Point __End = new Point();
private Form __frmMain = new Form();
private PictureBox __picMain = new PictureBox();
private Graphics __g = null;
private Pen __p = null;

public Color Color
{
get { return this.__Color; }
set { this.__Color = value; }
}
public Point Start
{
get { return this.__Start; }
set { this.__Start = value; }
}
public Point End
{
get { return this.__End; }
set { this.__End = value; }
}

public DrawClass(Form frmMain)
: this(frmMain, Color.Black)
{ }
public DrawClass(PictureBox picMian)
: this(picMian, Color.Red)
{ }

public DrawClass(Form frmMain, Color c)
{
this.__frmMain = frmMain;
this.__g = Graphics.FromHwnd(frmMain.Handle);
this.__Color = c;
this.__p = new Pen(this.__Color,2);
this.__frmMain.MouseDown += new MouseEventHandler(__frmMain_MouseDown);
this.__frmMain.MouseMove += new MouseEventHandler(__frmMain_MouseMove);
this.__frmMain.MouseUp += new MouseEventHandler(__frmMain_MouseUp);
}

public DrawClass(PictureBox frmMain, Color c)
{
this.__picMain = frmMain;
this.__g = Graphics.FromHwnd(frmMain.Handle);
this.__Color = c;
this.__p = new Pen(this.__Color,2);
this.__picMain.MouseDown += new MouseEventHandler(__frmMain_MouseDown);
this.__picMain.MouseMove += new MouseEventHandler(__frmMain_MouseMove);
this.__picMain.MouseUp += new MouseEventHandler(__frmMain_MouseUp);
}

private void __frmMain_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
__End.X = e.X;
__End.Y = e.Y;
__g.DrawLine(this.__p, __Start, __End);
__Start = __End;
}
}

private void __frmMain_MouseUp(object sender, MouseEventArgs e)
{

}

private void __frmMain_MouseDown(object sender, MouseEventArgs e)
{
this.__Start.X = e.X;
this.__Start.Y = e.Y;
}

}

DrawClass draw = new ZhuoHuiClass.DrawClass(this.pic);                              //调用画笔功能

时间: 2024-10-07 19:03:09

在控件内实现简单画笔功能的相关文章

ActiveReports 9 新功能:借助目录(TOC)控件为报表添加目录功能

原文:ActiveReports 9 新功能:借助目录(TOC)控件为报表添加目录功能 在最新发布的ActiveReports 9报表控件中添加了多项新功能,以帮助你在更短的时间里创建外观绚丽.功能强大的报表系统,本文将重点介绍新增文档目录控件(TOC),通过拖拽操作便可添加报表目录. 目录控件可以帮助用户快速的导航到位于报表中希望查看的数据.可以使用目录控件内嵌报表主体的内容列表用于打印和导出.不像文档结构图只能在报表浏览器中查看不能导出或者打印. 本示例被分解为下面的步骤 Visual St

在GridView控件内文本框实现TextChanged事件

本篇是教你实现GridView控件内的TextBox文本框实现自身的TextChanged事件.由于某些功能的需求,GridView控件内嵌TextBox,当TextBox值发生变化时,触发TextChanged事件. 在.aspx网页内,Insus.NET尝试写一个GridView,算了,我们还想在Ajax环境之下运行: 为了实现TextChanged事件,得需要在GridView控件中写OnRowCreated事件,记住是OnRowCreated事件,而不是OnRowDataBound事件.

iOS开发UI篇—使用picker View控件完成一个简单的选餐应用 - 文顶顶

原文  http://www.cnblogs.com/wendingding/p/3771047.html iOS开发UI篇—使用picker View控件完成一个简单的选餐应用 一.实现效果 说明: 点击随机按钮,能够自动选取,下方数据自动刷新. 二.实现思路 1.picker view的有默认高度为162,不可修改. 2.显示数据,需要设置数据源,也有两种方式(成为数据源,遵守协议) 3.实现数据源里面的两个方法 1)返回一共有多少列 2)在这一列中一共有多少行 4.通过代理告诉它那一列的哪

使用picker View控件完成一个简单的选餐应用

使用picker View控件完成一个简单的选餐应用 一.实现效果 说明:点击随机按钮,能够自动选取,下方数据自动刷新. 二.实现思路 1.picker view的有默认高度为162,不可修改. 2.显示数据,需要设置数据源,也有两种方式(成为数据源,遵守协议) 3.实现数据源里面的两个方法 1)返回一共有多少列 2)在这一列中一共有多少行 4.通过代理告诉它那一列的哪一行显示哪些数据(设置其代理为控制器) 5.使用懒加载,加载所有的食物 6.完成基本数据的展示(列,行,内容) 7.自动更新选中

自行学习XAML控件后的简单想法(作业一)

由于自身专业水平的欠佳,我对于XAML控件的学习并不深刻,只在简单了解过后产生了一二想法,也许十分荒谬,就减省地谈谈.以下五种控件,是我在学习后,并不十分看好或有所疑虑的. Canves 在浏览XAML Controls Gallery上各种控件的简单介绍时,这个控件引起我注意,它通过坐标轴控制每个内容的分布,是一个用于布局的控件. 首先,这个Canvas控件的展示样例图,让我想起了很多应用中的画面,例如:                              然而在我查询相关资料后,我发现

Asp.Net 控件radio 的简单使用

js: <script type="text/javascript"> function ok() { document.getElementById("txtPassword").disabled = false; } function no() { document.getElementById("txtPassword").disabled = true; } </script> 添加radio控件: <lab

Android高效率编码-细节,控件,架包,功能,工具,开源汇总,你想要的这里都有

Android高效率编码-细节,控件.架包,功能.工具,开源汇总 事实上写博客的初衷也并非说什么分享技术,毕竟咱还仅仅是个小程序猿.最大的目的就是对自我的知识积累.以后万一编码的时候断片了,也能够翻出来看看,这样子对自己也有优点,所以今天就汇总一下一些须要的东西.多图来了,加油! 一.游戏 小熊打字,我刚接触电脑练习打字的时候用到的 下载地址:http://download.csdn.net/detail/qq_26787115/9365721 二.色彩 这张颜色表上的颜色都太赞了 三.控件 1

.net控件安装不成功导致功能慢

刚实施反馈,有个功能时快时慢,快的时候1s,慢的时候60s,有点奇怪.先说下部署结构: weblogic + Oracle , jsp struts mybatis. 中间件发布在两台物理机器上(windows的操作系统),在中间件服务器1上访问功能慢,在中间件服务器2上访问功能很快.     1.使用httpwatch,可以看到慢的地方 http://10.15.152.180:8003/web/gg/task/patrol/eprint.cab  404   0.1s http://acti

Web控件文本框Reset的功能

在前一篇中<怎样实现Web控件文本框Reset的功能>http://www.cnblogs.com/insus/p/4120889.html Insus.NET只实现了文本框的功能.单个或是多个,有默认值与无值.只要用户点击重置(Reset)时,我们就要以对Web控件进行重置. 参考博文,其实你完全可以写出其它的控件的重置功能来.如DropDownLsit,ListBox,CheckBox,CheckBoxList,RadioButtonList等等. 想实现什么控件Reset功能,均需要创建