Winform中实现会旋转的Label控件

csharp 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace UserCtrlLib
{
    public class RotateLabel:Label
    {
		public RotateLabel() {
			this.AutoSize = false;
            this.BackColor = Color.Transparent;
        }
		private float rotateAngle;
        [Description("旋转角度")]
        [Category("自定义外观")]
        public float RotateAngle
		{
			get { return rotateAngle; }
			set 
			{ 
				rotateAngle = value;
				Invalidate();
			}
		}

        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            float w = Width;
            float h = Height;
            //将graphics坐标原点移到矩形中心点
            g.TranslateTransform(w / 2, h / 2);
            g.RotateTransform(RotateAngle);
            SizeF sz = g.MeasureString(Text, this.Font);
            float x = -sz.Width / 2;
            float y = -sz.Height / 2;
            Brush brush = new SolidBrush(this.ForeColor);
            g.DrawString(Text, this.Font, brush, new PointF(x, y));
        }
	}
}
相关推荐
Aevget6 天前
DevExpress WinForms中文教程:Data Grid - 如何按汇总值对分组行进行排序?
界面控件·winform·devexpress·ui开发·.net 10
Crazy Struggle9 天前
别再说 WinForm 做的工业软件丑了!这些开源库让它颜值拉满、交互流畅
.net·winform·sunnyui
czhc114007566313 天前
Winform126 DataGrIdView ListView
c#·winform
Aevget15 天前
界面控件开发包DevExpress v25.1.7更新上线——修复一些小bug
c#·wpf·winform·devexpress·ui开发·用户界面
故事不长丨16 天前
C#定时器与延时操作的使用
开发语言·c#·.net·线程·定时器·winform
Crazy Struggle18 天前
基于 JSON 配置的 .NET 桌面应用自动更新方案
.net·winform·自动更新
Aevget19 天前
界面控件DevExpress WinForms中文教程:Data Grid - 如何获取汇总值?
ui·.net·界面控件·winform·devexpress
czhc114007566319 天前
WinForm 1130 monthCalendar NumbericUpDown Timer
c#·winform
PfCoder20 天前
WinForm真入门(20)——StatusStrip控件解析
开发语言·windows·c#·winform·statusstrip
PfCoder1 个月前
C# async / await 用法以及和Task的关系
c#·多线程·winform·async、await