最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
[UWP]使用CompositionLinearGradientBrush實現(xiàn)漸變畫筆并制作動畫

1. 什么是 CompositionBrush

CompositionBrush(合成畫筆)是操作可視化層時用于繪制 SpriteVisual?區(qū)域的畫筆。

做網(wǎng)站、成都網(wǎng)站建設(shè)過程中,需要針對客戶的行業(yè)特點、產(chǎn)品特性、目標受眾和市場情況進行定位分析,以確定網(wǎng)站的風(fēng)格、色彩、版式、交互等方面的設(shè)計方向。成都創(chuàng)新互聯(lián)公司還需要根據(jù)客戶的需求進行功能模塊的開發(fā)和設(shè)計,包括內(nèi)容管理、前臺展示、用戶權(quán)限管理、數(shù)據(jù)統(tǒng)計和安全保護等功能。

使UWP 應(yīng)用時可以選擇使用 XAML 畫筆或 CompositionBrush(合成畫筆) 繪制 UIElement。很多時候XAML畫筆和合成畫筆都能實現(xiàn)同樣的效果,在官方文檔 使用 XAML 畫筆 vs。CompositionBrush 這一節(jié)中有詳細的對比介紹。

[UWP]使用CompositionLinearGradientBrush實現(xiàn)漸變畫筆并制作動畫

CompositionBrush性能更好且能做更復(fù)雜的動畫。XAML Brush的能力是有極限的,我從短暫的UWP生涯當中學(xué)到一件事,XAML Brush越是玩弄動畫,動畫就越可能因為沒有料到的事態(tài)而失敗……除非超越XAML Brush。所以我不做XAML Brush動畫啦。

2. 使用CompositionLinearGradientBrush

CompositionLinearGradientBrush 是線性漸變畫筆,它是最基本的畫筆之一,可以實現(xiàn)類似 LinearGradientBrush的效果?;臼褂貌襟E如下:

  1. 通過Compositor創(chuàng)建CompositionLinearGradientBrush;
  2. 通過Compositor創(chuàng)建并配置CompositionColorGradientStop,然后添加到CompositionLinearGradientBrush的ColorStops里;
  3. 創(chuàng)建SpriteVisual并將它的Brush設(shè)置為CompositionLinearGradientBrush;
  4. 使用ElementCompositionPreview.SetElementChildVisual 將SpriteVisual設(shè)置到某個UIElement的可視化層里。

具體代碼如下:

var compositor = Window.Current.Compositor;

//創(chuàng)建 CompositionLinearGradientBrush。
var gradientBrush = compositor.CreateLinearGradientBrush();
gradientBrush.StartPoint = Vector2.Zero;
gradientBrush.EndPoint = new Vector2(1.0f);

var blueGradientStop = compositor.CreateColorGradientStop();
blueGradientStop.Offset = 0f;
blueGradientStop.Color = Color.FromArgb(255, 43, 210, 255);
var redGradientStop = compositor.CreateColorGradientStop();
redGradientStop.Offset = 1f;
redGradientStop.Color = Color.FromArgb(255, 255, 43, 136);
gradientBrush.ColorStops.Add(blueGradientStop);
gradientBrush.ColorStops.Add(redGradientStop);

//創(chuàng)建SpriteVisual并設(shè)置Brush
var backgroundVisual = compositor.CreateSpriteVisual();
backgroundVisual.Brush = gradientBrush;

//將自定義 SpriteVisual 設(shè)置為元素的可視化樹的最后一個子元素。
ElementCompositionPreview.SetElementChildVisual(Gradient, backgroundVisual);

Gradient.SizeChanged += (s, e) =>
{
    if (e.NewSize == e.PreviousSize)
        return;

    //設(shè)置gradientBrush的尺寸
    backgroundVisual.Size = e.NewSize.ToVector2();
    gradientBrush.CenterPoint = backgroundVisual.Size / 2;
};

運行效果如下:

[UWP]使用CompositionLinearGradientBrush實現(xiàn)漸變畫筆并制作動畫

寫了這么多代碼,最終的效果其實和下面的XAML一樣。


    
        
            
            
        
    

到目前為止看起來CompositionBrush沒什么優(yōu)勢。

3. 使用合成動畫

其實CompositionBrush其中一個好玩的地方是靈活的合成動畫。

要使用合成動畫,簡單來說就是三個步驟:

  1. 創(chuàng)建CompositionAnimation;
  2. 配置CompositionAnimation;
  3. 在要實現(xiàn)動畫效果的CompositionObject及其屬性上調(diào)用StartAnimation;

下面這段代碼是對CompositionColorGradientStop的Offset屬性進行動畫:

//創(chuàng)建動畫
var relaxGradientStopOffsetAnimation = _compositor.CreateScalarKeyFrameAnimation();
//配置動畫
relaxGradientStopOffsetAnimation.Duration = TimeSpan.FromSeconds(1);
relaxGradientStopOffsetAnimation.InsertKeyFrame(1.0f, ViewModel.IsInPomodoro ?1.0f : 0.75f);
//運行動畫
_relaxGradientStop.StartAnimation(nameof(_relaxGradientStop.Offset), relaxGradientStopOffsetAnimation);

完整代碼在 這里,具體運行效果如下:

[UWP]使用CompositionLinearGradientBrush實現(xiàn)漸變畫筆并制作動畫

4. 結(jié)語

其實上面的動畫也可以用XAML畫刷及Storyboard實現(xiàn),但和這些技術(shù)已經(jīng)老夫老妻了,再玩下去也沒什么激情,所以想要玩點新花樣。最近一直在搞番茄鐘應(yīng)用,有什么新的想法都會塞進去,可以在下面地址安裝:

一個番茄鐘

5. 參考

合成畫筆 - Windows UWP applications _ Microsoft Docs
合成動畫 - Windows UWP applications _ Microsoft Docs
CompositionLinearGradientBrush Class (Windows.UI.Composition) - Windows UWP applications _ Microsoft Docs
SpriteVisual Class (Windows.UI.Composition) - Windows UWP applications _ Microsoft Docs
ElementCompositionPreview.SetElementChildVisual(UIElement, Visual) Method (Windows.UI.Xaml.Hosting) - Windows UWP applications _ Microsoft Docs

6. 源碼

OnePomodoro_Gradients.xaml.cs at master


網(wǎng)站名稱:[UWP]使用CompositionLinearGradientBrush實現(xiàn)漸變畫筆并制作動畫
網(wǎng)站鏈接:http://fisionsoft.com.cn/article/jpepdp.html