【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 ...
随机推荐
- layui-dTree显示不出来且前台报错
layui-dTree显示不出来且前台报错 Cannot read property 'parents' of null 检查过后发现layer并没有使用到,找不到任何办法解决. 最后删除了respo ...
- spring-boot 连接数据库(六)
环境 jdk 6 tomcat 6.0.53 sts 4.4.2 maven 3.2.5 mysql 5.7 准备 接下来的数据库操作基于 mysql,所以需要一套可用的 mysql 环境. 引入 j ...
- ArrayList与LinkedList的区别,如何减少嵌套循环的使用
如果要减少嵌套循环的使用: 我们可以将需要在二重循环里面判断的条件放在一个Map的key里面: 在判断的时候只需要进行key是否存在,然后操作接下来的步骤: 这样子就会减少二重循环了,不会发生循环n* ...
- LeetCode 160——相交链表(JAVA)
编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB ...
- Codeforces 1244F. Chips
传送门 显然可以注意到连续的两个相同颜色的位置颜色是不会改变的,并且它还会把自己的颜色每秒往外扩展一个位置 同时对于 $BWBWBW...$ 这样的序列,它每个位置的颜色每一秒变化一次 然后可以发现, ...
- Neo4j WARNING: Max 1024 open files allowed, minimum of 40 000 recommended. See the Neo4j manual
you can add a line in /etc/default/neo4j: NEO4J_ULIMIT_NOFILE=60000 to set the ulimit setting (60000 ...
- 怎样使用 CSS 清除 input 输入框聚焦选中时的蓝色边框?
input 输入框的聚焦选中时的边框是由 outline 属性控制的, 直接使用: input { outline: none } 即可. 如下:
- windowsformshost mouse event not transmit to it's parent control
in the case you can do it to fix: MouseEventArgs e = new MouseEventArgs(Mouse.PrimaryDevice, 0); e.R ...
- 【原创】大叔经验分享(58)kudu写入压力大时报错
kudu写入压力大时报错 19/05/18 16:53:12 INFO AsyncKuduClient: Invalidating location fd52e4f930bc45458a8f29ed1 ...
- linux mysql-5.7.26 安装全记录
买了个阿里云,自己折腾一下. 时间:2019年7月17日13:40:18 1.下载 wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7. ...