这篇文件,教你怎么一步步的用GDI+手绘一个lable标签页。

自主动手绘制,首先继续控件Control 也可以继续UserControl。
个人比较方向于用Control来重绘。

在布局函数中添加如下代码块,紧张用于减少窗体加载闪烁问题,控件背景可以利用透明颜色,当然也可以自定义。
直接按照个人喜好修正即可。

base.SetStyle( ControlStyles.UserPaint | ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor, true); base.UpdateStyles(); this.BackColor = Color.Transparent;

接下来创建用户在设计时候修正的属性内容,lable ,关键内容即为Text属性,代码如下

C控件美化之路自己着手绘制用GDI绘制一个Lable控件二

#region 公有属性 [Category("Wen"), Description("显示笔墨内容")] public override string Text { get => base.Text; set { base.Text = value; this.Invalidate(); } } #endregion

以上代码块中把稳 this.Invalidate()

此代码在重绘中运用相比拟较多。
使控件的全体图面无效并导致重绘控件。

以上内容完成后,关键内容便是,如何绘制一个利用GDI绘制

重写属性 Paint

protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; g.SmoothingMode = SmoothingMode.AntiAlias; //使绘图质量最高,即肃清锯齿 g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.CompositingQuality = CompositingQuality.HighQuality; Rectangle rec = this.ClientRectangle; //在此位置绘制自主内容,以上代码紧张用于提高绘制质量 base.OnPaint(e); }

//此段代码块,注明了如何绘制文本 g.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), rec, new StringFormat(StringFormatFlags.NoClip | StringFormatFlags.NoWrap) { LineAlignment = StringAlignment.Center, Alignment = StringAlignment.Near, Trimming = StringTrimming.EllipsisCharacter });

至此,一个大略的lable控件完成。
建议看的小伙伴,不要直接复制代码。
一步步熟习,并开始自定义绘制内容。
并理解其意思,文中不贴完全代码。
希望小伙伴,一步步的操作。
不要心急。

关注文林软控,后续带大家一起重绘美化C#控件。