지정한 인덱스의 탭을 선택 및 호버 상태에 맞게 그립니다.
129 {
130 if (index < 0 || index >= TabCount) return;
131 var tabRect = GetTabRect(index);
132 bool selected = SelectedIndex == index;
133
134
135 var mousePos = PointToClient(Cursor.Position);
136 bool hovered = tabRect.Contains(mousePos) && !selected;
137
138
139 var bg = hovered
140 ? Color.FromArgb(0xFF, 0x16, 0x20, 0x40)
141 : DreamineTheme.BarBackground;
142
143 using var bgBrush = new SolidBrush(bg);
144 g.FillRectangle(bgBrush, tabRect);
145
146
147 if (selected)
148 {
149 using var selPen = new Pen(DreamineTheme.AccentBlue, 2.5f);
150 g.DrawLine(selPen, tabRect.Left + 4, tabRect.Bottom - 1, tabRect.Right - 4, tabRect.Bottom - 1);
151 }
152
153
154 var textColor = selected ? DreamineTheme.TextPrimary
155 : hovered ? Color.FromArgb(0xFF, 0xCC, 0xE4, 0xFF)
156 : DreamineTheme.TextSecondary;
157
158 using var brush = new SolidBrush(textColor);
159 var sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
160 g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
161 g.DrawString(TabPages[index].Text, Font, brush, tabRect, sf);
162 }