UWP Brush画笔详解
前往我的主頁以獲取更好的閱讀體驗,并下載文中的示例代碼UWP Brush畫筆詳解 - DearXuan的主頁https://blog.dearxuan.com/2021/10/08/UWP-Brush%E7%94%BB%E7%AC%94%E8%AF%A6%E8%A7%A3/
通用
畫筆命名空間
Windows.UI.Xaml.Media
顏色
畫筆使用Windows.UI.Color類作為顏色屬性,而不是System.Drawing.Color
這是一個8位ARGB模式的顏色,A為不透明度,255為完全不透明,0為完全透明
你也可以使用Windows.UI.Colors類根據名稱直接獲取顏色
Color color1 = new Color() { A = 255, R = 0, G = 0, B = 255 }; Color color2 = Colors.White;使用自定義畫筆
通常控件都會有Background,Foreground等屬性,這就是控件的畫筆
TextBox textBox = new TextBox(); textBox.Foreground = new SolidColorBrush(Colors.White);純色畫筆?SolidColorBrush
介紹
純色畫筆負責在繪圖區繪制單一顏色,顏色采用8位ARGB色彩模式
代碼
SolidColorBrush的構造函數包含一個Color對象,Color定義的顏色即Brush的顏色
public Brush 純色畫筆() {//定義ColorColor color = new Color() { A = 255, R = 0, G = 0, B = 255 };SolidColorBrush brush = new SolidColorBrush(color);return brush; }警告: 不要把Windows.UI.Color定義成System.Drawing.Color
效果?
線性漸變畫筆?LinearGradientBrush
介紹
漸變畫筆用于繪制漸變圖案,漸變方向用漸變向量描述,每個漸變點稱為梯度點
代碼?
使用LinearGradientBrush來初始化一個畫筆實例,并為它設置起始點和終點
LinearGradientBrush brush = new LinearGradientBrush(); brush.StartPoint = new Point(0, 0); brush.EndPoint = new Point(1, 1);其中(0,0)是左上角,(1,1)是右下角。從StartPoint指向EndPoint的向量稱為漸變向量。分別過起點和終點作漸變向量所在直線的垂線,中間的區域即為有效區,外面為無效區。將起點和終點設為(0,0),(1,1)表示整個繪圖區域都是有效區。如果終點坐標大于1,則部分圖像會被繪制到窗口外面,因此終點的坐標通常小于等于1
修改漸變向量可以達到修改漸變方向的效果
其中無效區并不是說不會被繪制,而是不會出現漸變效果,它的顏色會分別和漸變向量在的起點和終點處的顏色相同。
定義梯度點
GradientStop gradientStop1 = new GradientStop(); GradientStop gradientStop2 = new GradientStop(); gradientStop1.Color = Color.FromArgb(255, 0, 0, 0); gradientStop1.Offset = 0; gradientStop2.Color = Color.FromArgb(255, 255, 255, 255); gradientStop2.Offset = 1;梯度點決定了漸變向量某一點處的顏色。
Color為梯度點的顏色,Offset為梯度點相對于漸變向量的偏移,0表示起點,1表示終點,0.5表示中點。如果偏移大于1,那么梯度點就會被定位到無效區,此時計算機仍舊按照這個位置來計算漸變顏色,但是超出有效區的部分不會被繪制。
完整代碼
public Brush 線性漸變畫筆() {//定義線性漸變畫筆LinearGradientBrush brush = new LinearGradientBrush();//定義梯度點GradientStop gradientStop1 = new GradientStop();GradientStop gradientStop2 = new GradientStop();//設置梯度點顏色和偏移gradientStop1.Color = Color.FromArgb(255, 0, 0, 0);gradientStop1.Offset = 0;gradientStop2.Color = Color.FromArgb(255, 255, 255, 255);gradientStop2.Offset = 1;//添加梯度點brush.GradientStops.Add(gradientStop1);brush.GradientStops.Add(gradientStop2);//設置起始點和終點brush.StartPoint = new Point(0, 0);brush.EndPoint = new Point(1, 1);return brush; }上面的代碼中設置了起點和終點的顏色,分別為黑色和白色,而中間部分的顏色會由程序自動計算填充。下圖是上面代碼的效果
通過添加多個梯度點可以實現多種顏色的漸變效果
public Brush 線性漸變畫筆() {//定義線性漸變畫筆LinearGradientBrush brush = new LinearGradientBrush();//定義梯度點GradientStop gradientStop1 = new GradientStop();GradientStop gradientStop2 = new GradientStop();GradientStop gradientStop3 = new GradientStop();//設置梯度點顏色和偏移gradientStop1.Color = Colors.Black;gradientStop1.Offset = 0;gradientStop2.Color = Colors.White;gradientStop2.Offset = 0.3;gradientStop3.Color = Colors.Red;gradientStop3.Offset = 1;//添加梯度點brush.GradientStops.Add(gradientStop1);brush.GradientStops.Add(gradientStop2);brush.GradientStops.Add(gradientStop3);//設置起始點和終點brush.StartPoint = new Point(0, 0);brush.EndPoint = new Point(1, 0);return brush; }定位方式?
上面的介紹都是基于相對位置的,(1,1)表示繪圖區的右下角。如果希望顏色不隨控件大小改變而拉伸,需要把畫筆定位方式修改為絕對位置
brush.MappingMode = BrushMappingMode.Absolute; // 絕對坐標 //brush.MappingMode = BrushMappingMode.RelativeToBoundingBox; // 相對坐標?但此時終點坐標就不能寫成(1,1)了,而是要改成具體數字
brush.EndPoint = new Point(500, 0);平鋪畫筆?ImageBrush
介紹
平鋪畫筆可以加載一張圖片作為繪制內容
代碼
public Brush 平鋪畫筆() {//定義平鋪畫筆ImageBrush brush = new ImageBrush();//加載圖片brush.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/1.jpg"));//設置圖片在保留縱橫比的同時適應控件大小brush.Stretch = Stretch.Uniform;return brush; }效果
亞克力畫筆
介紹
亞克力畫筆提供了更簡潔,更美觀的繪圖方案,它通過模糊背景的方法,來實現半透明效果
代碼
定義亞克力畫筆
AcrylicBrush brush = new AcrylicBrush();選擇畫筆的背景采樣源,你可以指定控件或應用窗口來作為源
brush.BackgroundSource = AcrylicBackgroundSource.HostBackdrop; // 從窗口后面采樣 brush.BackgroundSource = AcrylicBackgroundSource.Backdrop; // 從控件中采樣如果以控件作為采樣源,那么你可以透過使用了亞克力畫筆的控件,隱約看見下面的控件
如果以應用窗口作為采樣源,那么你可以透過該控件,隱約看到桌面壁紙
修改覆蓋層的顏色和不透明度來達到更美觀的效果
//不透明度為0.5 brush.TintOpacity = 0.5; //覆蓋層顏色 brush.TintColor = Color.FromArgb(255, 64, 158, 254);這里需要注意: 覆蓋層的顏色不透明度和覆蓋層的不透明度只需要設置一個,如果兩個都是半透明,最后的效果將會疊加。
總結
以上是生活随笔為你收集整理的UWP Brush画笔详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 知识图谱分类
- 下一篇: Internet Explorer 无法