使用Paint事件重畫GroupBox來修改邊框顏色
在.Net下進行WinForm開發,GroupBox是經常要用到的一個控制元件。但是GroupBox自身的邊框是灰白色的,其樣式很難令開發者滿意。在不借用第三方控制元件的情況下,通過其的Paint事件對GroupBox進行重畫,也可以很方便的修改其邊框顏色/樣式。
簡要說一下實現思路。首先用Clear方法清除GroupBox的顯示,接著再用合適的樣式把GroupBox畫出來。把GroupBox拆分為4個圓角,一行標題文字和數段直線等元素,把這些元素擺放在合適的位置,拼湊出GroupBox的外框。定義4個Rectangle(用於後面的畫圓角),確定它們的大小和位置;然後在確切的位置上畫4個弧段,按圓角在GroupBox上的位置確定其角度;接著在對應的位置畫出GroupBox標題和幾條直線,就大功告成了。只需簡單修改程式碼中的設定顏色語句,便可以完成GroupBox邊框顏色的更換了。
using System;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Drawing.Drawing2D;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void groupBox1_Paint(objectsender, PaintEventArgs e
{
e.Graphics.Clear(groupBox1.BackColor);
Rectangle Rtg_LT = newRectangle();
Rectangle Rtg_RT = newRectangle();
Rectangle Rtg_LB = newRectangle();
Rectangle Rtg_RB = newRectangle();
Rtg_LT.X = 0; Rtg_LT.Y = 7; Rtg_LT.Width= 10; Rtg_LT.Height = 10;
Rtg_RT.X = e.ClipRectangle.Width -11; Rtg_RT.Y = 7; Rtg_RT.Width = 10; Rtg_RT.Height = 10;
Rtg_LB.X = 0; Rtg_LB.Y =e.ClipRectangle.Height - 11; Rtg_LB.Width = 10; Rtg_LB.Height = 10;
Rtg_RB.X = e.ClipRectangle.Width - 11;Rtg_RB.Y = e.ClipRectangle.Height - 11; Rtg_RB.Width = 10; Rtg_RB.Height =10;
Color color = Color.FromArgb(51,94, 168);
Pen Pen_AL = new Pen(color,1);
Pen_AL.Color = color;
Brush brush = newHatchBrush(HatchStyle.Divot, color);
e.Graphics.DrawString(groupBox1.Text, groupBox1.Font, brush, 6, 0);
e.Graphics.DrawArc(Pen_AL, Rtg_LT,180, 90);
e.Graphics.DrawArc(Pen_AL, Rtg_RT,270, 90);
e.Graphics.DrawArc(Pen_AL, Rtg_LB,90, 90);
e.Graphics.DrawArc(Pen_AL, Rtg_RB,0, 90);
e.Graphics.DrawLine(Pen_AL, 5, 7,6, 7);
e.Graphics.DrawLine(Pen_AL,e.Graphics.MeasureString(groupBox1.Text, groupBox1.Font).Width + 3, 7,e.ClipRectangle.Width - 7, 7);
e.Graphics.DrawLine(Pen_AL, 0, 13,0, e.ClipRectangle.Height - 7);
e.Graphics.DrawLine(Pen_AL, 6,e.ClipRectangle.Height - 1, e.ClipRectangle.Width - 7, e.ClipRectangle.Height -1);
e.Graphics.DrawLine(Pen_AL,e.ClipRectangle.Width - 1, e.ClipRectangle.Height - 7, e.ClipRectangle.Width -1, 13);
}
}
} 執行效果圖如下:
程式碼稍顯繁瑣,但也很好的實現了修改GroupBox邊框樣式/顏色的效果。
相關文章
- 直播網站原始碼,修改el-input邊框顏色網站原始碼
- jQuery設定div邊框顏色jQuery
- CSS--border邊框顏色漸變CSS
- Android自定義邊框背景顏色的ToastAndroidAST
- Canvas&Paint 知識梳理(3) 顏色合成 Paint#setColorFilterCanvasAIFilter
- [SVG]修改固定顏色為填充顏色SVG
- 短視訊系統,不改變背景顏色的基礎上更改邊框和字型顏色
- 修改UITabBarItem字型顏色UItabBar
- 修改Android 介面顏色Android
- Eclipse背景顏色修改Eclipse
- iOS UISearchBar 修改背景顏色iOSUI
- ffmpeg修改顏色空間
- 藉助 CSS Colorguard 避免使用重複顏色CSS
- 短視訊系統,android Switch修改顏色修改樣式滑塊顏色Android
- iOS 修改狀態列StatusBar的顏色及文字顏色iOS
- Linux 修改shell中顏色Linux
- windows10視窗邊框顏色怎麼設定_windows10邊框在哪裡設定Windows
- win10 工作列顏色修改方法 win10工作列怎麼修改顏色Win10
- 如何修改CAD夢想畫圖繪圖視窗的背景顏色繪圖
- CSS 設定文字框游標顏色CSS
- 直播網站程式原始碼,給元件按鈕、文字編輯框等設定圓形邊框、顏色網站原始碼元件
- HTML5inputplaceholder顏色修改HTML
- 修改VS的程式碼高亮顏色
- 去掉chrome瀏覽器中input獲得焦點時的帶顏色邊框呢Chrome瀏覽器
- 天地圖修改主題顏色修改背景色地圖
- Pypycharm修改程式碼字型大小及修改顏色PyCharm
- win10 如何修改工作列顏色 win10怎樣修改工作列顏色Win10
- Win10系統怎麼修改桌面工作列顏色?工作列顏色修改步驟教程Win10
- 自定義chrome的輸入框背景顏色Chrome
- 直播軟體搭建,修改狀態列、導航條顏色及文字顏色
- 修改SVG圖片的大小和顏色SVG
- 修改pyqtgraph匯出檢視背景顏色QT
- iPhone 修改navigation bar 字型和顏色iPhoneNavigation
- 微信小程式修改radio顏色微信小程式
- Android取消EditText自帶黃色邊框Android
- 純css改變輸入框游標顏色CSS
- VARCHART XGantt系列教程:使用顏色來定義語義
- 【iOS開發】修改present出來的ViewController狀態列顏色iOSViewController