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-自定义控件】自定义控件学习+一个笑脸控件例子的更多相关文章

  1. WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 菜单M ...

  2. WPF自定义控件与样式(10)-进度控件ProcessBar自定义样

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: Pro ...

  3. Qt编写自定义控件11-设备防区按钮控件

    前言 在很多项目应用中,需要根据数据动态生成对象显示在地图上,比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,安防领域一般用来表示防区或者设备,可以直接显示防区号,有多种状态颜色指 ...

  4. Qt编写自定义控件8-动画按钮组控件

    前言 动画按钮组控件可以用来当做各种漂亮的导航条用,既可以设置成顶部底部+左侧右侧,还自带精美的滑动效果,还可以设置悬停滑动等各种颜色,原创作者雨田哥(QQ:3246214072),驰骋Qt控件界多年 ...

  5. Qt编写自定义控件32-等待进度条控件

    一.前言 在各种各样的执行任务界面,有时候需要比较多的时间,需要给出一个直观的等待进度条表示当前正在执行的进度,而不至于懵逼在那里,用户不会觉得程序死了还是干嘛了. 等待进度条有好几种办法,比如直接叫 ...

  6. Qt编写自定义控件24-图片轮播控件

    一.前言 上一篇文章写的广告轮播控件,采用的传统widget堆积设置样式表做的,这次必须要用到更高级的QPainter来绘制了,这个才是最高效的办法,本控件参考雨田哥的轮播控件,经过大规模的改造而成, ...

  7. Qt编写自定义控件23-广告轮播控件

    一.前言 广告轮播这个控件做的比较早,是很早以前定制一个电信客户端时候用到的,该客户端需要在首页展示轮播预先设定好的图片,图片的路径可以自由设定,然后轮播的间隔速度可以自由控制,同时该控件还需要提供两 ...

  8. iOS开发——UI高级OC篇&自定义控件之调整按钮中子控件(图片和文字)的位置

    自定义控件之调整按钮中子控件(图片和文字)的位置 其实还有一种是在storyBoard中实现的,只需要设置对应空间的左右间距: 这里实现前面两种自定义的方式 一:imageRectForContent ...

  9. WPF自定义控件(五)の用户控件(完结)

    用户控件,WPF中是继承自UserControl的控件,我们可以在里面融合我们的业务逻辑. 示例:(一个厌恶选择的用户控件) 后端: using iMicClassBase; using iMicCl ...

随机推荐

  1. POJ - 3687 Labeling Balls (拓扑)

    (点击此处查看原题) 题意 此处有n盏灯,编号为1~n,每盏灯的亮度都是唯一的,且在1~n范围之间,现已知m对灯之间的关系:a b ,说明灯a的亮度比灯b小,求出每盏灯的亮度,要求字典序最小(编号小的 ...

  2. Elastic Search常用元数据简介

    在ES中,除了定义的index,type,和管理的document外,还有若干的元数据.这些元数据用于记录ES中需要使用的核心数据.在ES中,元数据通常使用下划线’_’开头. 1 查看数据GET /i ...

  3. Web开发Flask框架学习笔记

    Python 是一种跨平台的[计算机程序设计语言],是一种面向对象的动态类型语言,Python是纯粹的自由软件,源代码和解释器CPython遵循 GPL(GNU General Public Lice ...

  4. 位运算解决“一个数组中,只有一个数字出现n次,其他数字出现k次”问题

    转自:https://blog.csdn.net/monster_girl/article/details/52928864 在学习完位操作后,经常会遇到一类关于查找缺失整数的问题. 第一类是给你一个 ...

  5. lua加载DLL

    .cpp //若没有在项目属性--库文件.依赖文件.包含添加.则添加一下路径 #pragma  comment (lib,"lua5.1.lib") #include " ...

  6. WebFont技术使用之如何在app中使用自定义字体

    参考 H5自定义字体解决方法(mark) 移动Web字体的使用 [原]移动web页面使用字体的思考 CSS @font-face规则 引用外部服务器字体

  7. z-index神奇的失效了!!!

    z-index简单介绍 首先z-index只对定位元素有效,什么是定位元素呢,也就是设置了position属性的元素,position:relative--相对定位,position:absolute ...

  8. CF516D Drazil and Morning Exercise

    cf luogu 首先每个点到最远点的距离可以预处理出来,这个距离显然是这个点到树直径两端点的最大值.把那个距离记为\(d_i\),然后从小到大枚举\(d_i\),并强制它为最大的\(d_i\),那么 ...

  9. openlayers 地图移动缩放动画

    map.getView().animate({ // 只设置需要的属性即可 center: [data.jd, data.wd], // 中心点 zoom: 11, // 级别 rotation: u ...

  10. odoo字段属性

    以下为可用的非关联字段类型以及其对应的位置参数: Char(string)是一个单行文本,唯一位置参数是string字段标签. Text(string)是一个多行文本,唯一位置参数是string字段标 ...