熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

WPF程序員武器庫圖片按鈕

2013-11-13 10:09:29  來源: .NET編程 

  一般漂亮點的軟件界面都不會使用系統默認的按鈕樣式其中異形的圖片按鈕使用頻率比較高
    本猿不想每次需要的時候再重新寫一遍或者大段的復制粘貼代碼所以做了一個自定義的圖片按鈕控件
    擴充一下自己的軍火庫當做常規武器方便以後使用
    做之前也查了不少資料發現寫XAML可以實現很多很炫的動畫效果
    用express工具也可以做出很炫的水晶按鈕
    可惜本猿是從C++到C#再轉到WPF的所以上面樣都不是很熟
    只能用做C#winform程序的思想來實現了
    按鈕最多包括態的圖片彈起經過按下禁用其中彈起和按下時必須的
    初始化圖片按鈕控件的時候指定張圖片的路徑按鈕載入圖片
    控件捕獲其內部image控件的鼠標事件改變image的顯示圖片
    鼠標在空間內按下然後彈起則認為是點擊事件觸發該控件的自定義點擊事件
    imageButtonxaml
    xmlns=
    xmlns:x=    >>
   
   
   
   
   
    imageButtonxamlcs
    using System; using SystemWindowsControls; using SystemWindowsInput; using SystemWindowsMedia;
    namespace NingTao {
    ///
    /// imageButtonxaml 的交互邏輯
    ///
    public partial class imageButton : UserControl
    {
    // 設置按鈕使能狀態
    private bool isEnable = true;
    // 按鈕的種狀態圖片
    private ImageSource imageUp = null;
    private ImageSource imageHover = null;
    private ImageSource imageDown = null;
    private ImageSource imageDisable = null;
    // 按鈕的文本屬性
    private string text = ;
    private FontFamily textFamily;
    private double textSize;
    private Brush textColor;
    // 是否在當前按鈕中按下
    private bool isClicking = false;
    // 點擊事件
    public event EventHandler click;
    public imageButton()
    {
    InitializeComponent()
    }
    #region 屬性賦值
    // 按鈕可用
    public bool IsEnable
    {
    get { return isEnable; }
    set
    {
    isEnable = value;
    imageBtnSource = isEnable ? imageUp : imageDisable;
    }
    }
    // 按鈕彈起圖片
    public ImageSource ImageUp
    {
    get { return imageUp; }
    set
    {
    imageUp = value;
    imageBtnSource = imageUp;
    }
    }
    // 按鈕劃過圖片
    public ImageSource ImageHover
    {
    get { return imageHover; }
    set { imageHover = value; }
    }
    // 按鈕按下圖片
    public ImageSource ImageDown
    {
    get { return imageDown; }
    set { imageDown = value; }
    }
    // 按鈕禁用圖片
    public ImageSource ImageDisable
    {
    get { return imageDisable; }
    set { imageDisable = value; }
    }
    // 按鈕文本
    public string Text
    {
    get { return text; }
    set
    {
    text = value;
    labelBtnContent = text;
    }
    }
    // 按鈕字體
    public FontFamily TextFamily
    {
    get { return textFamily; }
    set
    {
    textFamily = value;
    labelBtnFontFamily = textFamily;
    }
    }
    // 按鈕字號
    public double TextSize
    {
    get { return textSize; }
    set
    {
    textSize = value;
    labelBtnFontSize = textSize;
    }
    }
    // 文字顏色
    public Brush TextColor
    {
    get { return textColor; }
    set
    {
    textColor = value;
    labelBtnForeground = textColor;
    }
    }
    #endregion
    #region 按鈕事件
    // 進入
    private void imageBtn_MouseEnter(object sender MouseEventArgs e)
    {
    if (isEnable)
    {
    if (null != imageHover)
    {
    imageBtnSource = imageHover;
    }
    }
    }
    // 按下
    private void imageBtn_MouseLeftButtonDown(object sender MouseButtonEventArgs e)
    {
    if (isEnable)
    {
    isClicking = true;
    if (null != imageDown)
    {
    imageBtnSource = imageDown;
    }
    }
    }
    // 彈起
    private void imageBtn_MouseLeftButtonUp(object sender MouseButtonEventArgs e)
    {
    if (isEnable)
    {
    // 完成在控件上點擊
    if (isClicking)
    {
    isClicking = false;
    imageBtnSource = imageUp;
    // 觸發點擊事件
    if (null != click) click(this null)
    }
    }
    }
    // 離開
    private void imageBtn_MouseLeave(object sender MouseEventArgs e)
    {
    if (isEnable)
    {
    isClicking = false;
    imageBtnSource = imageUp;
    }
    }
    #endregion
    } }

  使用方法
   
    xmlns=
    xmlns:x=
    xmlns:imageBotton =clrnamespace:NingTao
    Title=圖片按鈕演示 Height= Width=>
   
   
   
   
    using System;using SystemCollectionsGeneric;using SystemLinq;using SystemText;using SystemWindows;using SystemWindowsControls;using SystemWindowsData;using SystemWindowsDocuments;using SystemWindowsInput;using SystemWindowsMedia;using SystemWindowsMediaImaging;using SystemWindowsNavigation;using SystemWindowsShapes;namespace WpfTest{ /// /// Windowxaml 的交互邏輯 /// public partial class Window : Window {
    public Window()
    {
    InitializeComponent()
    }
    private void Grid_Loaded(object sender RoutedEventArgs e)
    {
    // 加載按鈕圖片
    try
    {
    imgButtonAImageUp = new BitmapImage(new Uri(SystemEnvironmentCurrentDirectory + //skins//apng))
    imgButtonAImageHover = new BitmapImage(new Uri(SystemEnvironmentCurrentDirectory + //skins//apng))
    imgButtonAImageDown = new BitmapImage(new Uri(SystemEnvironmentCurrentDirectory + //skins//apng))
    imgButtonAImageDisable = new BitmapImage(new Uri(SystemEnvironmentCurrentDirectory + //skins//apng))
    imgButtonVImageUp = new BitmapImage(new Uri(SystemEnvironmentCurrentDirectory + //skins//vpng))
    imgButtonVImageHover = new BitmapImage(new Uri(SystemEnvironmentCurrentDirectory + //skins//vpng))
    imgButtonVImageDown = new BitmapImage(new Uri(SystemEnvironmentCurrentDirectory + //skins//vpng))
    imgButtonVImageDisable = new BitmapImage(new Uri(SystemEnvironmentCurrentDirectory + //skins//vpng))
    }
    catch
    {
    MessageBoxShow(按鈕圖片加載出錯!
    }
    // 按鈕文字
    imgButtonAText = 禁用按鈕;
    imgButtonVText = 禁用按鈕;
    // 按鈕點擊事件
    imgButtonAclick += new EventHandler(imgButtonA_click)
    imgButtonVclick += new EventHandler(imgButtonV_click)
    }
    // 禁用按鈕
    void imgButtonA_click(object sender EventArgs e)
    {
    imgButtonVIsEnable = !imgButtonVIsEnable;
    }
    // 禁用按鈕
    void imgButtonV_click(object sender EventArgs e)
    {
    imgButtonAIsEnable = !imgButtonAIsEnable;
    } }}


From:http://tw.wingwit.com/Article/program/net/201311/12734.html
  • 上一篇文章:

  • 下一篇文章:
  • Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.