首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Winform兑现圆角TextBox

2012-08-13 
Winform实现圆角TextBox在WEB或WPF里很好实现,WINFORM下好像要重绘控件吧。具体的实现代码,哪位能提供一下

Winform实现圆角TextBox
在WEB或WPF里很好实现,WINFORM下好像要重绘控件吧。

具体的实现代码,哪位能提供一下呢,谢谢了。

[解决办法]
private void Form1_Load(object sender, EventArgs e)
{
this.textBox1.Region = new Region(GetRoundRectPath(new RectangleF(0, 0, this.textBox1.Width, this.textBox1.Height), 10f));
}

//适合调整参数radius...
public GraphicsPath GetRoundRectPath(RectangleF rect, float radius)
{
return GetRoundRectPath(rect.X, rect.Y, rect.Width, rect.Height, radius);
}

public GraphicsPath GetRoundRectPath(float X, float Y, float width, float height, float radius)
{
GraphicsPath path = new GraphicsPath();
path.AddLine(X + radius, Y, (X + width) - (radius * 2f), Y);
path.AddArc((X + width) - (radius * 2f), Y, radius * 2f, radius * 2f, 270f, 90f);
path.AddLine((float)(X + width), (float)(Y + radius), (float)(X + width), (float)((Y + height) - (radius * 2f)));
path.AddArc((float)((X + width) - (radius * 2f)), (float)((Y + height) - (radius * 2f)), (float)(radius * 2f), (float)(radius * 2f), 0f, 90f);
path.AddLine((float)((X + width) - (radius * 2f)), (float)(Y + height), (float)(X + radius), (float)(Y + height));
path.AddArc(X, (Y + height) - (radius * 2f), radius * 2f, radius * 2f, 90f, 90f);
path.AddLine(X, (Y + height) - (radius * 2f), X, Y + radius);
path.AddArc(X, Y, radius * 2f, radius * 2f, 180f, 90f);
path.CloseFigure();
return path;
}

[解决办法]

探讨

晕,我楼上刚说的很粗糙效果的就是1L朋友发的代码。

而且我希望能写一个TextBoxEX类,继承TextBox类,然后实例化TextBox的时候,直接用我的TextBoxEX类就可以了。

热点排行