C#通过重写Panel改变边框颜色与宽度的方法
程序员文章站
2023-01-10 17:49:37
本文实例讲述了c#通过重写panel改变边框颜色与宽度的方法。分享给大家供大家参考。具体实现方法如下:
using system;
using system.c...
本文实例讲述了c#通过重写panel改变边框颜色与宽度的方法。分享给大家供大家参考。具体实现方法如下:
using system; using system.collections.generic; using system.text; using system.runtime.interopservices; using system.componentmodel; using system.windows.forms; using system.drawing; namespace imagestudio { public class panelex : system.windows.forms.panel { [dllimport("user32.dll")] private static extern intptr getwindowdc(intptr hwnd); [dllimport("user32.dll")] private static extern int releasedc(intptr hwnd, intptr hdc); private color _bordercolor = color.black; private int _borderwidth = 1; // // 摘要: // 获取或设置控件的边框颜色。 // // 返回结果: // 控件的边框颜色 system.drawing.color。默认为 system.drawing.color.black // 属性的值。 [description("组件的边框颜色。"), category("appearance")] public color bordercolor { get { return _bordercolor; } set { _bordercolor = value; this.invalidate(); } } // // 摘要: // 获取或设置控件的边框宽度。 // // 返回结果: // 控件的边框宽度 int。默认为 1 // 属性的值。 [description("组件的边框宽度。"), category("appearance")] public int borderwidth { get { return _borderwidth; } set { _borderwidth = value; this.invalidate(); } } public panelex() { setstyle(controlstyles.doublebuffer, true); setstyle(controlstyles.allpaintinginwmpaint, false); setstyle(controlstyles.resizeredraw, true); setstyle(controlstyles.userpaint, true); setstyle(controlstyles.supportstransparentbackcolor, true); this.paint+=new painteventhandler(panelex_paint); } private void panelex_paint(object sender, painteventargs e) { if (this.borderstyle == borderstyle.fixedsingle) { intptr hdc = getwindowdc(this.handle); graphics g = graphics.fromhdc(hdc); controlpaint.drawborder( g, new rectangle(0, 0, this.width, this.height), _bordercolor, _borderwidth, buttonborderstyle.solid, _bordercolor, _borderwidth, buttonborderstyle.solid, _bordercolor, _borderwidth, buttonborderstyle.solid, _bordercolor, _borderwidth, buttonborderstyle.solid); g.dispose(); releasedc(handle, hdc); } } } }
希望本文所述对大家的c#程序设计有所帮助。