WPF中繪畫和動畫(3)

2021-08-26 11:24:51 字數 856 閱讀 6401

1.矩形

矩形由筆觸(stroke,即邊線)和填充(fill)構成。stroke屬性的設定於line一樣,fill屬性的資料型別是brush。brush是個抽象類,所以我們不可能拿乙個brush類的例項為fill屬性賦值而只能用brush派生類的例項進行賦值。

wpf的繪畫系統包含非常豐富的brush型別,常用的有:

(1)solidcolorbrush:實心畫刷。在xaml中可以使用顏色名稱字串(如red、blu)直接賦值。

(2)lineargradientbrush:線性漸變畫刷。色彩豔設定的直線方向、按設定的變化點進行漸變。

(3)radialgradientbrush:徑向漸變畫刷。色彩沿半徑的方向、按設定的變化點進行漸變,形成圓形填充。

(5)drawingbrush:使用向量圖(vector)和點陣圖(bitmap)作為填充內容。

(6)visualbrush:wpf中的每個控制項都是由frameworkelement類派生來的,而frameworkelement又是由visual類派生來的。visual意為「可視」之意,每個控制項的視覺化形象就可以通過visual類的方法獲得。獲得這個視覺化的形象後,我們可以用這個形象進行填充,這就是visualbrush。比如當我想把窗體上的某個控制項拽到另乙個位置,當滑鼠鬆開之前需要在滑鼠只指標下顯現乙個控制項的「幻影」,這個「幻影」就是用visualbrush填充出來的乙個矩形,並讓矩形捕捉滑鼠的位置、隨滑鼠移動。

下面是用各種畫刷填充矩形的綜合例項:

xmlns:x=""

title="rectangle and brush" height="390" width="600">

實際效果如圖2所示:

WPF中繪畫和動畫(四)

接下來我們看乙個visualbrush的例子。為了簡單起見,目標控制項是乙個button,實際工作中換成複雜控制項的效果也一樣。程式的xaml 如下 xmlns xmlns x title visualbrush height 300 width 400 background orange marg...

wpf 動畫 WPF中監視動畫進度

前台xaml 1.新增乙個progressbar監視進度,注意這裡最大值設定為1,因為動畫始終clock的currentprocess屬性最大值是1。2.響應故事板的currenttimeinvalidated事件 後台 該事件在動畫前進乙個步長時發生 private void storyboard...

WPF中的動畫 (二)From To By 動畫

我們所實現的的動畫中,很大一部分是讓乙個屬性在起始值和結束值之間變化,例如,我在前文中實現的改變寬度的動畫 varwidthanimation newdoubleanimation button.beginanimation widthproperty,widthanimation 這個動畫實現了寬...