1. 程式人生 > 實用技巧 >使用GDI+建立一個玻璃按鈕

使用GDI+建立一個玻璃按鈕

截圖 示例應用程式使用一個帶有影象的標準玻璃按鈕。 相同的應用程式,但這次它有一個定製的玻璃按鈕。 MFC應用程式,主機有四個玻璃按鈕。 介紹 我打賭你已經在Windows Vista中看到了動畫任務按鈕。我有。我想知道如何建立一個類似的控制元件。幸運的是,我找到了一個網頁,描述瞭如何使用Microsoft Expression Blend(建立一個玻璃按鈕:完整教程)來實現這一點。使用Microsoft Expression Blend建立的玻璃按鈕(以及整個應用程式)需要。net Framework 3.0才能執行。因為有些人還不能或者不想使用。net Framework 3.0,所以我決定只使用GDI+來重寫這個很酷的控制元件,這樣它就可以和。net Framework 2.0一起工作了。 將XAML“轉換”為c# (GDI+) 上面提到的頁面上的教程很容易完成,生成的XAML程式碼非常容易理解,因此“轉換”沒有大問題。 例如,我翻譯了以下程式碼: 隱藏,複製Code

<BorderHorizontalAlignment="Stretch"Margin="0,0,0,0"x:Name="shine"Width="Auto"CornerRadius="4,4,0,0">

  <Border.Background>
    <LinearGradientBrushEndPoint="0.494,0.889"StartPoint="0.494,0.028">
      <GradientStopColor="#99FFFFFF"Offset="0"/>

      <GradientStopColor="#33FFFFFF"Offset
="1"/> </LinearGradientBrush> </Border.Background> </Border>

成: 隱藏,複製Code

using (GraphicsPath bh = CreateTopRoundRectangle(rect2, 4))
{
  int opacity = 0x99;
  if (isPressed) opacity = (int)(.4f * opacity + .5f);
  using (Brush br = new LinearGradientBrush(rect2, 
                          Color.FromArgb(opacity, shineColor),
                          Color.FromArgb(opacity / 3
, shineColor), LinearGradientMode.Vertical)) { g.FillPath(br, bh); } }

(這只是DrawButtonBackground方法的一個片段。) 甚至懸停按鈕的動畫也可以通過使用Timer類輕鬆獲得。不幸的是,當玻璃按鈕很大時,動畫就不那麼流暢了。 如何使用GlassButton類? GlassButton類派生自Button類,因此它可以以同樣的方式使用。現在還支援在玻璃按鈕上顯示影象。即使在Visual Studio的表單設計器中,這些指導原則也能很好地工作。 歷史 1.3.2(02.11.2008) -重要!這是該控制元件的最後一個“獨立”版本。下一個版本將包含在CodePlex上的一個新專案中。 修正了一個錯誤,導致按鈕的形象被處置在某些情況下 1.3.1 (27.10.2008) 原始碼現在在c#和VB中都可以得到。修正了網路小bug 1.3 (19.11.2007) 新增屬性“FadeOnFocus”改進了效能,修正了小錯誤 1.2 (31.03.2007) “禁用”的外觀不同於“啟用”一個增加了一些“PropertyChange”事件改進效能分裂原始碼編譯庫和演示應用程式增加了MFC演示應用程式增加工具箱點陣圖小錯誤修正 1.1.1 (22.02.2007) 小蟲子固定 1.1 (21.02.2007) 新增圖片的支援 1.0 (19.02.2007) 第一個版本 本文轉載於:http://www.diyabc.com/frontweb/news505.html