【Winform-自定义控件】自定义控件学习+一个笑脸控件例子
1.CompositeControls组合控件:在原有控件的基础上根据需要进行组合
2.ExtendedControls 扩展控件:继承自原有控件,添加一些新的属性和方法,绘制一些新元素
当每个Button都使用一样的样式,可以使用自定义控件统一设置控件的属性、方法。
using System;
using System.Windows.Forms;
using System.Drawing; public class TouchscreenButton : Button
{
public TouchscreenButton()
{
this.Width = ;
this.Height = ;
this.FlatStyle = FlatStyle.Flat;
this.Cursor = Cursors.Hand;
this.ForeColor = Color.Black;
this.BackColor = Color.White;
this.FlatAppearance.BorderSize = ;
this.FlatAppearance.BorderColor = Color.Navy;
}
}
3.CustomControls自定义控件:控件的绘制全部由用户定义
一个可爱的笑脸控件
public partial class Smiley : Control
{ public enum SampleColours
{
Red,
Green,
Blue,
Yellow
}
//创建一个枚举类型的属性,则这个属性可以进行选择
private SampleColours _smileyColor;
public SampleColours SmileyColor
{
get { return _smileyColor; }
set { _smileyColor = value; }
} private string _smileyName;
public string SmileyName
{
get { return _smileyName; }
set { _smileyName = value; }
} public Smiley()
{
InitializeComponent();
} protected override void OnPaint(PaintEventArgs pe)
{
//选择背景颜色
Color back;
switch (_smileyColor)
{
case SampleColours.Blue:
back = Color.Blue;
break;
case SampleColours.Green:
back = Color.Green;
break;
case SampleColours.Red:
back = Color.Red;
break;
default:
back = Color.Yellow;
break;
}
Brush background = new SolidBrush(back); //画背景
pe.Graphics.FillEllipse(background, , , this.Width - , this.Height - );
//左眼
pe.Graphics.FillEllipse(Brushes.Black, (this.Width / ), (this.Height / ), (this.Width / ), (this.Height / ));
//右眼
pe.Graphics.FillEllipse(Brushes.Black, this.Width - (this.Width / ) - , (this.Height / ), (this.Width / ), (this.Height / ));
//嘴
pe.Graphics.DrawArc(Pens.Black, (this.Width / ), (this.Height / ), (this.Width / ), (this.Height / ), , ); // Calling the base class OnPaint
base.OnPaint(pe);
}
}
【Winform-自定义控件】自定义控件学习+一个笑脸控件例子的更多相关文章
- WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 菜单M ...
- WPF自定义控件与样式(10)-进度控件ProcessBar自定义样
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: Pro ...
- Qt编写自定义控件11-设备防区按钮控件
前言 在很多项目应用中,需要根据数据动态生成对象显示在地图上,比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,安防领域一般用来表示防区或者设备,可以直接显示防区号,有多种状态颜色指 ...
- Qt编写自定义控件8-动画按钮组控件
前言 动画按钮组控件可以用来当做各种漂亮的导航条用,既可以设置成顶部底部+左侧右侧,还自带精美的滑动效果,还可以设置悬停滑动等各种颜色,原创作者雨田哥(QQ:3246214072),驰骋Qt控件界多年 ...
- Qt编写自定义控件32-等待进度条控件
一.前言 在各种各样的执行任务界面,有时候需要比较多的时间,需要给出一个直观的等待进度条表示当前正在执行的进度,而不至于懵逼在那里,用户不会觉得程序死了还是干嘛了. 等待进度条有好几种办法,比如直接叫 ...
- Qt编写自定义控件24-图片轮播控件
一.前言 上一篇文章写的广告轮播控件,采用的传统widget堆积设置样式表做的,这次必须要用到更高级的QPainter来绘制了,这个才是最高效的办法,本控件参考雨田哥的轮播控件,经过大规模的改造而成, ...
- Qt编写自定义控件23-广告轮播控件
一.前言 广告轮播这个控件做的比较早,是很早以前定制一个电信客户端时候用到的,该客户端需要在首页展示轮播预先设定好的图片,图片的路径可以自由设定,然后轮播的间隔速度可以自由控制,同时该控件还需要提供两 ...
- iOS开发——UI高级OC篇&自定义控件之调整按钮中子控件(图片和文字)的位置
自定义控件之调整按钮中子控件(图片和文字)的位置 其实还有一种是在storyBoard中实现的,只需要设置对应空间的左右间距: 这里实现前面两种自定义的方式 一:imageRectForContent ...
- WPF自定义控件(五)の用户控件(完结)
用户控件,WPF中是继承自UserControl的控件,我们可以在里面融合我们的业务逻辑. 示例:(一个厌恶选择的用户控件) 后端: using iMicClassBase; using iMicCl ...
随机推荐
- Java MyBatis逆向工程,自动生成pojo,mapper
生成xml文件,文件名generator.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYP ...
- c++学习笔记之引用
引用是 C++ 的新增内容,在实际开发中会经常使用:C++ 用的引用就如同C语言的指针一样重要,但它比指针更加方便和易用,有时候甚至是不可或缺的. 同指针一样,引用能够减少数据的拷贝,提高数据的传递效 ...
- uname、hostname命令
一.uname:显示系统信息. 语法: uname [OPTION] ... 描述 打印某些系统信息. 没有选项,与-s相同. -a,--all ...
- iterm2 vim 开启滚轮
之前使用mac自带终端时,可以通过上下滑动触摸板来在vim中快速浏览上下文.最近听说iterm2功能更加强大,索性试一试.发现默认没有这个功能,感觉应该可以通过配置实现,于是在iterm2的prefe ...
- X86逆向9:通过关键常量破解
本章将讲解一下关于关键全局变量的一些内容,关键的全局变量对于软件的破解非常的有用,找到了关键全局变量并改写它同样可以完成完美爆破一个程序,这里我将使用CM小例子来讲解搜索关键变量的一些技巧,最后我们来 ...
- Elastic Search快速上手(1):简介及安装配置
前言 最近开始尝试学习Elastic Search,因此决定做一些简单的整理,以供后续参考,快速上手使用ES. 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多 ...
- Codeforces 1189D2. Add on a Tree: Revolution
传送门 首先可以证明一颗树合法的充分必要条件是不存在某个节点的度数为 $2$ 首先它是必要的,考虑任意一条边连接的两点如果存在某一点 $x$ 度数为 $2$ ,那么说明 $x$ 还有连一条边出去,那么 ...
- BufferedImage类、Image类、Graphics类
BufferedImage Image是一个抽象类,BufferedImage是其实现类,是一个带缓冲区图像类,主要作用是将一幅图片加载到内存中(BufferedImage生成的图片在内存里有一个图像 ...
- C#面向对象9 字符串
1.字符串的不可变性 当你给一个字符串重新赋值之后,老的值并没有销毁,而是重新开辟了一块空间(堆)存储新的值. **当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁. 示意图 ...
- MVC4中使用EntityFramework
首先,MVC4不支持EntityFramwok 6版本,如果安装了EntityFramwok 6,则vs不会自动引用dll和修改web.config配置.先删除旧的版本,执行指令:Uninstall- ...