玲cc 发表于 2013-2-6 23:57:51

转:重绘panel边框方法

今天搜索到这个帖子,赶紧收藏了~~
http://delphi.ktop.com.tw/board.php?cid=169&fid=1220&tid=101360
 

<span style="font-family: sans-serif, taipei, Tahoma, Verdana, Arial; font-size: 16px;">NET 的 Panel 控件非常陽春, 本以為升級到 VS2010 會不會增強一些屬性, 結果看起來跟 VS2003 的 Panel 完全一樣, 沒有改進 , 我還是用我習慣的 VS2003 就好了
.NET 的 Panel 控件外觀只有三種樣式選擇 : BorderStyle = None (無外框) , FixedSingle (單線外框), Fixed3D (立體) , 而立體也只有凹下去的 Style, 沒有凸出來的 Style ; 圖中最上面三種樣式即為標準的 .NET Panel 控件樣式
 
我們今天來實作可以像 Delphi / C++Builder 中的 Panel 有更多的外觀 , 也就是圖中下面六種樣式, 看起來是否更活潑呢 ? 

http://delphi.ktop.com.tw/download/upload/4c664c3e665e8_00.JPG

■ 實作方法
在 Panel 控件的 OnPaint (重繪事件) 中畫出我們要的外框, 為了要讓各個 Panel 都可任意設定自己的外框, 又不想在每個 Panel 控件的 OnPaint (重繪事件) 寫一大堆 CODE , 所以我把共用的 CODE 包成一獨立函式  Custmer_PanelPaint() , 透過傳入參數的不同, 決定外框式樣, 以後有時間再把它包成控件
 
■ 重繪函式

傳入參數
BevelOuter        1:Panel外框為凸起  2:Panel外框為凹下
BevelInner        1:Panel內框為凸起  2:Panel內框為凹下  0:無內框  
BorderWidth       Panel 外框與內框之間距寬度

例 : 於 Panel 之 OnPaint 事件中 呼叫 Custmer_PanelPaint(sender, e, 2, 1, 1);
      表 外框為凹下, 內框為凸起, 內外框間距為 1


<div class="dp-highlighter" style="font-family: 'Courier New', Courier, mono; font-size: 14px; background-color: #ffffff; width: 775px; margin-top: 18px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; border: 1px solid #2b91af;"><div class="bar" style="padding-left: 45px;"><div class="tools" style="">檢視純文字版列印?
页: [1]
查看完整版本: 转:重绘panel边框方法