C# WinForm控件美化扩展系列之TabControl控件(3)-完整版
- 摘要:前面的文章C# WinForm控件美化扩展系列之TabControl控件(2)实现了对Tab项处于上方和下方时的重绘,这篇文章中接着介绍Tab项处于左边和右边时的重绘,实现对TabControl的完全美化。
前面的文章C# WinForm控件美化扩展系列之TabControl控件(2)实现了对Tab项处于上方和下方时的重绘,这篇文章中接着介绍Tab项处于左边和右边时的重绘,实现对TabControl的完全美化。
实现Tab项处于左右两边的重绘跟Tab项处于上方和下方时的重绘几乎一样,难点在于文字需要竖着绘制,这涉及到GDI+旋转和平移的知识。具体怎么实现平移和旋转在这里不进行详细的介绍,贴一段Tab项在左边是绘制文字的代码吧:
case TabAlignment.Left:
if (hasImage)
{
textRect.Height = tabRect.Height - tabRect.Width + 2;
}
g.TranslateTransform(textRect.X, textRect.Bottom); //平移
g.RotateTransform(
sf = new StringFormat(StringFormatFlags.NoWrap);
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
sf.Trimming = StringTrimming.Character;
newTextRect = textRect;
newTextRect.X = 0;
newTextRect.Y = 0;
newTextRect.Width = textRect.Height;
newTextRect.Height = textRect.Width;
using (Brush brush = new SolidBrush(page.ForeColor))
{
g.DrawString(
page.Text,
page.Font,
brush,
newTextRect,
sf);
}
g.ResetTransform();
break;
除了绘制文字,就是对背景、图标和边框的绘制了,这些比较容易,就不介绍了,最后来看看TabControl完成后的完整效果:
到此为止,就完成了对TabControl的完全绘制,但是有点遗憾的是,当TabControl设为左右显示Tab项的时候,就会默认是多行显示Tab项,不能实现垂直显示的时候也是单行显示,实现像QQ那样的TabControl,这等以后有时间再来解决了。
声明:
本文版权归作者和CS 程序员之窗所有,欢迎转载,转载必须保留以下版权信息,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
作者:Starts_2000
出处:CS 程序员之窗 http://www.csharpwin.com。
你可以免费使用或修改提供的源代码,但请保留源代码中的版权信息,详情请查看:
CS程序员之窗开源协议 http://www.csharpwin.com/csol.html。