WPF動態改變主題顏色

2021-09-22 13:22:11 字數 3252 閱讀 6880

國內的wpf技術先行者

周銀輝曾介紹過

如何動態改變應用程式的主題樣式

,今天我們來介紹一種輕量級的改變介面風格的方式——動態改變主題色。

下面我們就來自己動手實現這種技術:

x:key

="color"

color

="skyblue"

/>

然後來設計這樣乙個介面:

我們讓使用者通過4個滑塊來分別定製顏色的a、r、g、b值,其完整**為:

height

="28"

/>

height

="28"

/>

height

="28"

/>

height

="28"

/>

height

="*"

/>

width

="65*"

/>

width

="213*"

/>

grid.row

="0"

horizontalcontentalignment

="right"

>

透明度:

grid.row

="1"

horizontalcontentalignment

="right"

>

紅色:grid.row

="2"

horizontalcontentalignment

="right"

>

綠色:grid.row

="3"

horizontalcontentalignment

="right"

>

藍色:grid.row

="0"

grid.column

="1"

margin

="3"

name

="a"

smallchange

="1"

largechange

="15"

maximum

="255"

value

="255"

/>

grid.row

="1"

grid.column

="1"

margin

="3"

name

="r"

smallchange

="1"

largechange

="15"

maximum

="255"

value

="255"

/>

grid.row

="2"

grid.column

="1"

margin

="3"

name

="g"

smallchange

="1"

largechange

="15"

maximum

="255"

value

="255"

/>

grid.row

="3"

grid.column

="1"

margin

="3"

name

="b"

smallchange

="1"

largechange

="15"

maximum

="255"

value

="255"

/>

grid.column

="1"

grid.row

="4"

horizontalalignment

="left"

margin

="3,5,0,5"

name

="button1"

width

="75"

click

="button1_click"

>

更新顏色

需注意,要把滑塊的最大值設為255。

視窗樣式**如下:

定義樣式為幾個border進行巢狀,在最底層引用的之前定義的單色筆刷,在上層用低不透明度的白色和黑色覆蓋以產生不同的層次效果。

標籤樣式為:

按鈕樣式為:

其原理與視窗樣式相同。

然後回到主介面設計視窗,設定窗體的樣式:

style=""

接下來編輯後台**,首先為窗體增加事件處理以提供拖動功能:

mouseleftbuttondown

="window_mouseleftbuttondown"

後台事件處理**:

private

void window_mouseleftbuttondown(object sender, mousebuttoneventargs e)

為按鈕增加事件處理來更新介面顏色:

private

void button1_click(object sender, routedeventargs e)

「更新顏色」方法**如下:

public

void 

更新顏色(color c)

此方法首先移除資源「color」,然後再新增乙個同名的新筆刷,這樣就完成了動態替換工作。

現在編譯並執行程式,可以看到如下效果:

WPF動態改變主題顏色

國內的wpf技術先行者 周銀輝曾介紹過 如何動態改變應用程式的主題樣式 今天我們來介紹一種輕量級的改變介面風格的方式 動態改變主題色。下面我們就來自己動手實現這種技術 x key color color skyblue 然後來設計這樣乙個介面 我們讓使用者通過4個滑塊來分別定製顏色的a r g b值...

TextView設定動態改變顏色

第1種 tv.settextcolor android.graphics.color.red 系統自帶的顏色類 第2種 tv.settextcolor 0xffff00ff 0xffff00ff是int型別的資料,分組一下0x ff ff00ff,0x是代表顏色整數的標記,ff是表示透明度,ff00...

WPF 顏色漸變

一 按鈕顏色漸變 從上而下 button height 100 width 200 lineargradientbrush endpoint 0.5,1 startpoint 0.5,0 gradientstop color ffc5d2f3 offset 0 gradientstop color ...