【Winform-自定义控件】可以使用2种半透明的颜色来填充Button
制作一个自定义按钮,使用2种半透明的颜色来填充Button
1.添加一个自定义控件类,并改变基类,继承自Button
public partial class CustomControl1 : Button
2.为控件创建一些自定义属性
private Color color1 = Color.White; //第一种颜色
public Color Color1
{
get { return color1; }
set { color1 = value; Invalidate(); }
}
private Color color2 = Color.Black; //第二种颜色
public Color Color2
{
get { return color2; }
set { color2 = value; Invalidate(); }
}
private int color1Transparent = ; //第一种颜色透明度
public int Color1Transparent
{
get { return color1Transparent; }
set { color1Transparent = value; Invalidate(); }
}
private int color2Transparent = ; //第二种颜色透明度
public int Color2Transparent
{
get { return color2Transparent; }
set { color2Transparent = value; Invalidate(); }
}
Invalidate()方法用于刷新设计图。 3.重写Paint事件
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);//调用基类 //用两种半透明的颜色填充Button
Color c1 = Color.FromArgb(color1Transparent, color1);
Color c2 = Color.FromArgb(color2Transparent, color2);
Brush b = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, c1, c2, );
pe.Graphics.FillRectangle(b,ClientRectangle);
b.Dispose(); }
4.到这里就完成了。
完整代码:
using System;
using System.Windows.Forms;
using System.Drawing; namespace ctlCuteButton
{
public partial class CustomControl1 : Button
{ private Color color1 = Color.White; //第一种颜色
public Color Color1
{
get { return color1; }
set { color1 = value; Invalidate(); }
}
private Color color2 = Color.Black; //第二种颜色
public Color Color2
{
get { return color2; }
set { color2 = value; Invalidate(); }
}
private int color1Transparent = ; //第一种颜色透明度
public int Color1Transparent
{
get { return color1Transparent; }
set { color1Transparent = value; Invalidate(); }
}
private int color2Transparent = ; //第二种颜色透明度
public int Color2Transparent
{
get { return color2Transparent; }
set { color2Transparent = value; Invalidate(); }
} public CustomControl1()
{
} protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);//调用基类 //用两种半透明的颜色填充Button
Color c1 = Color.FromArgb(color1Transparent, color1);
Color c2 = Color.FromArgb(color2Transparent, color2);
Brush b = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, c1, c2, );
pe.Graphics.FillRectangle(b,ClientRectangle);
b.Dispose(); }
}
}
【Winform-自定义控件】可以使用2种半透明的颜色来填充Button的更多相关文章
- winform 自定义控件:半透明Loading控件
winform 自定义控件:半透明Loading控件 by wgscd date:2015-05-05 效果: using System;using System.Drawing;using Sys ...
- (二十二)c#Winform自定义控件-半透明窗体
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- winform 自定义控件属性在属性面板中显示
Jan.David Nothing is impossible, the word itself says 'I'm possible'!" — Audrey Hepburn winform ...
- Winform自定义控件实例
本文转自http://www.cnblogs.com/hahacjh/archive/2010/04/29/1724125.html 写在前面: .Net已经成为许多软件公司的选择,而.Net自定义W ...
- c#Winform自定义控件-目录
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- (二)c#Winform自定义控件-按钮
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- (三)c#Winform自定义控件-有图标的按钮
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- (三十一)c#Winform自定义控件-文本框(四)
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- (三十二)c#Winform自定义控件-表格
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
随机推荐
- 阿里云云计算ACP专业认证考试
阿里云云计算专业认证(Alibaba Cloud Certified Professional,ACP)是面向使用阿里云云计算产品的架构.开发.运维类人员的专业技术认证. 更多阿里云云计算ACP专业认 ...
- 1-python django的创建
一.Virtualenv(我的python环境是3.7) 1.虚拟环境创建(针对python版本和django的版本不一致的) 输入 pip install virtuallenv ,看到如下信息就是 ...
- X86逆向7:特殊窗体的破解思路
本章我们来看两个案例,这两个案例同样使用爆破的方式破解,但是与其他的程序不同,这个程序没有弹窗,提示成功或失败使用的是图片或是一个类似图片的窗体,本章将学习两个新的API函数的使用技巧. ------ ...
- 使用Qt 3D Studio 2.4显着提升性能(渲染速度提高了565%)
发布于2019年6月18日星期二11评论Qt 3D Studio 2.4显着改善性能 发表于Biz Circuit&Dev Loop,设计,图形,性能,Qt 3D Studio 除了有效使用系 ...
- 进阶Java编程(6)正则表达式
正则表达式 通过之前一系列的分析可以发现,String是一个非常万能的类型,因为String不仅仅可以支持有各种字符串的处理操作,也支持有向各个数据类型的转换功能,所以在项目的开发之中,只要用户输入的 ...
- 【原创】大叔问题定位分享(34)Spring的RestTemplate请求json数据后内容被修改
先看代码 org.springframework.web.client.RestTemplate public RestTemplate() { this.messageConverters = ne ...
- NetScaler循环抓包设置
NetScaler循环抓包设置 来源 https://raynorli.com/2018/07/01/netscaler-nstrace-cycling-capture/ 参考文档 How to Re ...
- JS基础_质数练习,用到了标记flag
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Excel学习笔记:行列转换
目录 offset函数 行列转换的三种方式 1.右键转置 2.转置公式TRANSPOSE 3.引用函数OFFSET+ROWS/COLUMN(支持随时更新数据) 一行(列)转多行多列 offset函数 ...
- JVM类加载机制和内存模型
一.JVM类加载机制 首先需要了解一下类加载器(ClassLoader): ClassLoader是Java的一个核心组件,它主要作用是从系统外部获得Class二进制数据流,然后将数据流装载到系统,交 ...