|
本帖最后由 Im922 于 2013-2-4 18:38 编辑
当我看到C#这个功能的时候,我简直是疯了!!!
比易语言还易语言!!!
下面教大家如何用C#自己画个按钮!
第一步,看效果:
效果图
第二步:确保你有面向对象基础!(最重要)必须学会继承与重写基方法
第三步:准备图片!在右边有一个“Properties”文件夹,找到他的子文件夹“Resources”上传图片,再此写一个:- using (你的解决方案名称).Properties;
复制代码 第五步,源代码:- class mybutton : Button//自绘按钮,继承自Button
- {
- //注意override关键字意思为重写基方法
- protected override void OnMouseDown(MouseEventArgs mevent)//鼠标按下的特效
- {
- //base.OnMouseDown(mevent);//这个是为了屏蔽按下事件
- Graphics g = this.CreateGraphics();//声明一个Graphics类型的g为这个时间的Graphics
- g.DrawImage(Resources.untitled2, new Rectangle(0, 0, Width, Height));/*第一个参数为调用Resources里的图片参数2指定大小,new Rectangle里面的参数为(我用易语言的说)(int 左边,int 顶边,int 宽度,int 高度) Width, Height是获取控件高度,前面两个零是让图片就画在按钮里*/
- g.DrawString(Text, new Font("Arial", 10), new SolidBrush(Color.Black), Width / 4, Height / 3); //画控件的文本
- //参数一指定画什么文本,参数2是字体,参数三是颜色,参数4是左边,参数5是顶边(易语言表达)
- //注:, Width / 4, Height / 3这两个是我计算过的,可以画在按钮中心!
- //下同!
- }
- protected override void OnMouseUp(MouseEventArgs mevent)
- {
- //base.OnMouseUp(mevent);
- CreateGraphics().DrawImage(Resources.untitled1, new Rectangle(0, 0, Width, Height));
- Graphics g = this.CreateGraphics();
- g.DrawString(Text, new Font("Arial", 10), new SolidBrush(Color.Black), Width / 4, Height / 3);
- EventArgs e = new EventArgs();//留神!鼠标抬起后必须执行按钮按下事件
- base.OnClick(e);
- }
- protected override void OnMouseEnter(EventArgs e)//下面几个根据英文翻译应该就知道了
- {
- //base.OnMouseEnter(e);
- CreateGraphics().DrawImage(Resources.untitled1, new Rectangle(0, 0, Width, Height));
- Graphics g = this.CreateGraphics();
- g.DrawString(Text, new Font("Arial", 10), new SolidBrush(Color.Black), Width / 4, Height / 3);
- }
- protected override void OnMouseClick(MouseEventArgs e)
- {
- //base.OnMouseClick(e);
- CreateGraphics().DrawImage(Resources.untitled2, new Rectangle(0, 0, Width, Height));
- Graphics g = this.CreateGraphics();
- g.DrawString(Text, new Font("Arial", 10), new SolidBrush(Color.Black), Width / 4, Height / 3);
- }
- protected override void OnPaint(PaintEventArgs pevent)//把初始状态画下来
- {
- //base.OnPaint(pevent);
- pevent.Graphics.DrawImage(Resources.untitled, new Rectangle(0, 0, Width, Height));
- pevent.Graphics.DrawString(Text, new Font("Arial", 10), new SolidBrush(Color.Black), Width / 4, Height / 3);
- }
- protected override void OnMouseLeave(EventArgs e)
- {
- //base.OnMouseLeave(e);
- CreateGraphics().DrawImage(Resources.untitled, new Rectangle(0, 0, Width, Height));
- Graphics g = this.CreateGraphics();
- g.DrawString(Text, new Font("Arial", 10), new SolidBrush(Color.Black), Width / 4, Height / 3);
- }
- }
- class mytextbox : TextBox//这个无视,没研究出来………………
- {
- protected override void OnPaint(PaintEventArgs e)
- {
- //base.OnPaint(e);
- e.Graphics.DrawImage(Resources.untitled2, new Rectangle(0, 0, Width, Height));
- }
- }
- class mylabel : Label//制作一个阴影特效按钮(在原来文字偏移一下画一个灰色的文字)
- {
- protected override void OnPaint(PaintEventArgs e)
- {
- //base.OnPaint(e);
- int heightint = Convert.ToInt32(Height *0.4);
- int widthint = Convert.ToInt32(Width /4.5);//获取高与宽(我打了草稿)
- e.Graphics.DrawString(Text, new Font("Arial", 10), new SolidBrush(Color.Black), Width /4, Height / 3);
- e.Graphics.DrawString(Text, new Font("Arial", 10), new SolidBrush(Color.Gray), widthint,heightint);//画阴影(为此我打了很多草稿才算出来的在哪里画阴影合适)
- }
- }
复制代码 第五步:运行一下,正常的话工具箱里会出现你的控件
第六部,检验:你可以修改Text的属性看是不是正常显示,然后写一个事件来看看- private void mybutton1_Click(object sender, EventArgs e)
- {
- MessageBox.Show("做到这里说明你成功了!!!");
- }
复制代码 注:每个程序都有BUG,我也不能确保我的程序就没有BUG。如果没看懂,就请进精易论坛C#编程交流群:217229525
学好以上方法,就可以在C#完美自绘了(与其他方法操作差不多)
控件自绘源码.zip
(125.85 KB, 下载次数: 81)
|
评分
-
查看全部评分
|