WinForm 中实现不规则按钮
在很多的视频播放器中,控制按钮都是不规则的,界面非常友好。在我们很多的WinForm项目中,为了增加界面的效果,有时也想加入一些闪亮的按钮,但光是有好看的图片也未必做出好的效果,在此,介绍一下如果制作一个不规则的按钮控件。
1、考虑如何改变Control.Region,我是使用图片生成一个GraphicsPath,按钮的形态就是这个GraphicsPath了。
private GraphicsPath GetAutoRgn(Image img, Color transColor)
{
int posT = 0;
int posS = 0;
Bitmap bm = null;
bm = new Bitmap(img, this.ClientSize);
// Bitmap bm = new Bitmap(this.shapeImage);
GraphicsPath myGraphicsPath = new System.Drawing.Drawing2D.GraphicsPath();
// myGraphicsPath.AddRectangle(new Rectangle(0,0,20,20));
// myGraphicsPath.AddRectangle(new Rectangle(20,6,12,12));
for (int y = 0; y < bm.Height; y++)
{
int x = 0;
while (x < bm.Width)
{
while (x < bm.Width && bm.GetPixel(x, y).ToArgb() == transColor.ToArgb())
{
x++;
}
posT = x; //透明颜色的结束位置,即不透明颜色的起始位置
while (x < bm.Width && bm.GetPixel(x, y).ToArgb() != transColor.ToArgb())
{
x++;
}
posS = x - 1; //不透明颜色的结束位置
if (posT <= posS)
{
//合并区域
myGraphicsPath.AddRectangle(new Rectangle(posT, y, x - posT, 1));
}
}
}
return myGraphicsPath;
}
生成了GraphicsPath 后,就可以设定现在控件的Region。
this.Region = new Region(gp) 按钮的形状就是图片的形状了。
本控件是从Label继承,利用Label来显示图片,减少开发的工作量,效果图如下(三个按钮)
不知怎样上传源文件,有需要的请留言。源代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗