日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UWP Brush画笔详解

發(fā)布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UWP Brush画笔详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前往我的主頁以獲取更好的閱讀體驗,并下載文中的示例代碼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類根據(jù)名稱直接獲取顏色

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

介紹

純色畫筆負(fù)責(zé)在繪圖區(qū)繪制單一顏色,顏色采用8位ARGB色彩模式

代碼

SolidColorBrush的構(gòu)造函數(shù)包含一個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來初始化一個畫筆實例,并為它設(shè)置起始點和終點

LinearGradientBrush brush = new LinearGradientBrush(); brush.StartPoint = new Point(0, 0); brush.EndPoint = new Point(1, 1);

其中(0,0)是左上角,(1,1)是右下角。從StartPoint指向EndPoint的向量稱為漸變向量。分別過起點和終點作漸變向量所在直線的垂線,中間的區(qū)域即為有效區(qū),外面為無效區(qū)。將起點和終點設(shè)為(0,0),(1,1)表示整個繪圖區(qū)域都是有效區(qū)。如果終點坐標(biāo)大于1,則部分圖像會被繪制到窗口外面,因此終點的坐標(biāo)通常小于等于1

修改漸變向量可以達到修改漸變方向的效果

其中無效區(qū)并不是說不會被繪制,而是不會出現(xiàn)漸變效果,它的顏色會分別和漸變向量在的起點和終點處的顏色相同。

定義梯度點

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,那么梯度點就會被定位到無效區(qū),此時計算機仍舊按照這個位置來計算漸變顏色,但是超出有效區(qū)的部分不會被繪制。

完整代碼

public Brush 線性漸變畫筆() {//定義線性漸變畫筆LinearGradientBrush brush = new LinearGradientBrush();//定義梯度點GradientStop gradientStop1 = new GradientStop();GradientStop gradientStop2 = new GradientStop();//設(shè)置梯度點顏色和偏移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);//設(shè)置起始點和終點brush.StartPoint = new Point(0, 0);brush.EndPoint = new Point(1, 1);return brush; }

上面的代碼中設(shè)置了起點和終點的顏色,分別為黑色和白色,而中間部分的顏色會由程序自動計算填充。下圖是上面代碼的效果

通過添加多個梯度點可以實現(xiàn)多種顏色的漸變效果

public Brush 線性漸變畫筆() {//定義線性漸變畫筆LinearGradientBrush brush = new LinearGradientBrush();//定義梯度點GradientStop gradientStop1 = new GradientStop();GradientStop gradientStop2 = new GradientStop();GradientStop gradientStop3 = new GradientStop();//設(shè)置梯度點顏色和偏移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);//設(shè)置起始點和終點brush.StartPoint = new Point(0, 0);brush.EndPoint = new Point(1, 0);return brush; }

定位方式?

上面的介紹都是基于相對位置的,(1,1)表示繪圖區(qū)的右下角。如果希望顏色不隨控件大小改變而拉伸,需要把畫筆定位方式修改為絕對位置

brush.MappingMode = BrushMappingMode.Absolute; // 絕對坐標(biāo) //brush.MappingMode = BrushMappingMode.RelativeToBoundingBox; // 相對坐標(biāo)

?但此時終點坐標(biāo)就不能寫成(1,1)了,而是要改成具體數(shù)字

brush.EndPoint = new Point(500, 0);

平鋪畫筆?ImageBrush

介紹

平鋪畫筆可以加載一張圖片作為繪制內(nèi)容

代碼

public Brush 平鋪畫筆() {//定義平鋪畫筆ImageBrush brush = new ImageBrush();//加載圖片brush.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/1.jpg"));//設(shè)置圖片在保留縱橫比的同時適應(yīng)控件大小brush.Stretch = Stretch.Uniform;return brush; }

效果

亞克力畫筆

介紹

亞克力畫筆提供了更簡潔,更美觀的繪圖方案,它通過模糊背景的方法,來實現(xiàn)半透明效果

代碼

定義亞克力畫筆

AcrylicBrush brush = new AcrylicBrush();

選擇畫筆的背景采樣源,你可以指定控件或應(yīng)用窗口來作為源

brush.BackgroundSource = AcrylicBackgroundSource.HostBackdrop; // 從窗口后面采樣 brush.BackgroundSource = AcrylicBackgroundSource.Backdrop; // 從控件中采樣

如果以控件作為采樣源,那么你可以透過使用了亞克力畫筆的控件,隱約看見下面的控件

如果以應(yīng)用窗口作為采樣源,那么你可以透過該控件,隱約看到桌面壁紙

修改覆蓋層的顏色和不透明度來達到更美觀的效果

//不透明度為0.5 brush.TintOpacity = 0.5; //覆蓋層顏色 brush.TintColor = Color.FromArgb(255, 64, 158, 254);

這里需要注意: 覆蓋層的顏色不透明度和覆蓋層的不透明度只需要設(shè)置一個,如果兩個都是半透明,最后的效果將會疊加。

總結(jié)

以上是生活随笔為你收集整理的UWP Brush画笔详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。