Source/TabStripRoundHeaderDisplay.cs

(开头部分) 9KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;

namespace DevComponents.DotNetBar
{
	/// <summary>
	/// Represents class performing the display of tabs with RoundHeader style.
	/// </summary>
	internal class TabStripRoundHeaderDisplay:TabStripBaseDisplay
	{
		#region Methods
		public override void Paint(Graphics g, TabStrip tabStrip)
		{
			base.Paint(g,tabStrip);

			TabsCollection tabs=tabStrip.Tabs;
			TabColorScheme colorScheme=tabStrip.ColorScheme;
			Rectangle clientRect=tabStrip.ClientRectangle;
			
			Rectangle r=tabStrip.DisplayRectangle;
			r.Inflate(2,2);
			using(SolidBrush brush=new SolidBrush(tabStrip.BackColor))
				g.FillRectangle(brush,r);
			//g.Clear(tabStrip.BackColor);

			TabItem lastTab=GetLastVisibleTab(tabs);

            Rectangle selectedRect = Rectangle.Empty;
            if (tabStrip.SelectedTab != null)
                selectedRect = tabStrip.SelectedTab.DisplayRectangle;
            DrawBackground(tabStrip, clientRect, g, colorScheme, GetTabsRegion(tabs, lastTab), tabStrip.TabAlignment, selectedRect);

			bool bFirstVisible=true;

			foreach(TabItem tab in tabs)
			{
				if(!tab.Visible)
					continue;
                if(tab.DisplayRectangle.IntersectsWith(clientRect))
				    PaintTab(g,tab,bFirstVisible,(tab==lastTab));
				
				bFirstVisible=false;
			}
		}

		protected override Region GetTabsRegion(TabsCollection tabs, TabItem lastTab)
		{
			bool bFirstVisible=true;
			Region tabRegion=new Region();
			tabRegion.MakeEmpty();
			foreach(TabItem tab in tabs)
			{
				if(!tab.Visible)
					continue;				
				GraphicsPath path=GetTabItemPath(tab,bFirstVisible,(tab==lastTab));
				tabRegion.Union(path);
				bFirstVisible=false;
			}
			return tabRegion;
后面还有 156 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。