首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 開發 WPF/Silverlight 動畫與遊戲教學 (43-2):QXIcon 控件三大模式重構

     編輯:關於C語言

QXIcon 圖標控件核心重構:三種交互模式統一實現

為滿足遊戲中物品圖標、技能圖標、選項卡等多樣化需求,將 QXIcon 重構為支援三種模式的統一控件,大幅減少美術素材與程式碼重複。

一、圖標類型枚舉定義

public enum IconTypes {
    None = 0,        // 普通圖標
    Transform = 1,   // 圖片切換模式 (懸停換圖)
    Highlights = 2   // 高亮遮罩模式 (疊加半透明層)
}

二、建構函數與模式邏輯

public QXIcon(IconTypes iconTypes) {
    InitializeComponent();
    switch (iconTypes) {
        case IconTypes.Transform:
            this.MouseEnter += delegate { Container.Background = NewSource; };
            this.MouseLeave += delegate { Container.Background = _BodySource; };
            break;
        case IconTypes.Highlights:
            Rectangle mask = new Rectangle() { Visibility = Visibility.Collapsed };
            Container.Children.Add(mask);
            this.MouseEnter += delegate {
                mask.Width = this.Width;
                mask.Height = this.Height;
                mask.Fill = NewSource;
                mask.Visibility = Visibility.Visible;
            };
            this.MouseLeave += delegate { mask.Visibility = Visibility.Collapsed; };
            break;
    }
}

Brush _BodySource;
public Brush BodySource {
    get { return _BodySource; }
    set { Container.Background = _BodySource = value; }
}

public Brush NewSource { get; set; }  // 切換圖/遮罩筆刷

三、設計優勢分析

模式適用場景資源優勢
None靜態圖標、純顯示用途零額外開銷
Transform按鈕狀態切換、技能冷卻遮罩需準備兩張圖片
Highlights物品/技能滑鼠懸停高亮單一遮罩筆刷複用所有圖標,節省素材空間

Highlights 模式亮點:一張半透明遮罩筆刷即可實現所有尺寸一致圖標的高亮效果,美術無需為每個圖標繪製高亮版本,開發無需管理大量圖片資源。

四、ToolTip 樣式系統化

統一採用自定義 ControlTemplate,移除預設邊框與背景,實現前文所述的自適應圓角黑色半透明風格。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved