自定义控件,首先需要会使用GDI+绘制,下面是代码段基本各种常用的都有,注释也很清楚,然后工具箱中就会出现该控件
1.新建一个cs文件,继承Control在这里插入代码片
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ControlDraw
{
/// <summary>
/// 自定义控件
/// </summary>
class MyControl :Control/*1.这里需要继承Control基类*/
{
public MyControl()
{
//两种设定颜色的方式
this.BackColor = Color.White;
this.BackColor = Color.FromArgb(255, 255, 255);
//控件的大小
this.Size = new Size(100, 100);
}
protected override void OnPaint(PaintEventArgs e)
{
//**描边的时候先使用brush涂色,在使用pen描边会避免上下边宽度不一样
//调用父类
base.OnPaint(e);
//定义一个画布
Graphics g = e.Graphics;
//平滑模式
g.SmoothingMode = SmoothingMode.HighQuality;
//定义画笔,5.0f 为画笔的宽度
Pen pen = new Pen(Color.Red,5.0f);
//自定义颜色 120代表的是透明度
Color color = Color.FromArgb(120, 255, 0, 0);
//定义刷子
Brush brush = new SolidBrush(Color.Blue);
//画圆
g.DrawEllipse(pen, 0, 0, 100, 100);
//画矩形
g.DrawRectangle(pen, 0, 0, 30, 30);
//填充
e.Graphics.FillEllipse(brush, 0, 0, 100, 100);
//还可以使用using写法,自动释放资源
using (Brush brush1 = new SolidBrush(Color.Red))
{
g.FillRectangle(brush, 0, 0, 100, 100);
}
#region 矩形缩放
Rectangle rectangle = new Rectangle(0, 0, 100, 100);
using (Pen p1 = new Pen(Color.Yellow, 5.0f))
{
//矩形向里缩放的距离,然后画椭圆
rectangle.Inflate(10, 10);
g.DrawEllipse(p1, rectangle);
}
#endregion
pen.Dispose();
g.Dispose();
}
//绘制背景色,背景色一般是不会改变的
protected override void OnPaintBackground(PaintEventArgs pevent)
{
base.OnPaintBackground(pevent);
Graphics g = pevent.Graphics;
int w = this.Width, h = this.Height;
Rectangle rect = new Rectangle(0, 0, w, h);
//渐变色
Brush lgbrush = new LinearGradientBrush(new Point(rect.Left, rect.Top)/*左上角*/,
new Point(rect.Right, rect.Bottom),
Color.FromArgb(255, 0, 0),
Color.FromArgb(255, 255, 255)
);
using (lgbrush)
{
g.FillRectangle(lgbrush, rect);
}
}
}
}
如果工具箱中没有该控件,则需要进行以下设置

效果图:

本文档展示了如何使用C#创建一个自定义控件,利用GDI+进行图形绘制,包括画圆、矩形,并实现背景渐变色。代码详细注释了绘制过程,同时提供了当控件未出现在工具箱时的解决方法。
2465

被折叠的 条评论
为什么被折叠?



