国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# WPF實現(xiàn)動畫漸入暗黑明亮主題切換效果

這篇具有很好參考價值的文章主要介紹了C# WPF實現(xiàn)動畫漸入暗黑明亮主題切換效果。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

C# WPF實現(xiàn)動畫漸入暗黑明亮主題切換效果

效果圖如下

C# WPF實現(xiàn)動畫漸入暗黑明亮主題切換效果,WPF開發(fā)心得,c#,wpf,開發(fā)語言
最近在Bilibili的桌面端看到一個黑白主題切換的效果感覺,挺有意思。于是我使用WPF嘗試實現(xiàn)該效果。
主要的切換效果,基本實現(xiàn)不過還存在一些小瑕疵,比如字體等筆刷不能跟隨動畫進入進行切換。因為Bilibili的客戶端是用electron寫的,前端使用的html,css確實太強了,這咱只能佩服。

實現(xiàn)思路

在文末已付上代碼的地址

  1. UI使用三段式的布局,那么第一列和第三列可以使用白色或黑色來進行主題底色的實現(xiàn)。而第二列則使用一個帶透明度的灰色進行覆蓋底色

  2. 切換主題時,需要兩部分操作,一是切換底色,二是切換文本等前景色的資源字典。因此我準(zhǔn)備了三個資源字典進行主題切換。Main用于存儲不變的筆刷資源,Light和Dark分別保存在明亮和暗黑兩種狀態(tài)下顯示不同的資源。
    C# WPF實現(xiàn)動畫漸入暗黑明亮主題切換效果,WPF開發(fā)心得,c#,wpf,開發(fā)語言
    C# WPF實現(xiàn)動畫漸入暗黑明亮主題切換效果,WPF開發(fā)心得,c#,wpf,開發(fā)語言
    C# WPF實現(xiàn)動畫漸入暗黑明亮主題切換效果,WPF開發(fā)心得,c#,wpf,開發(fā)語言

  3. 切換底色,如果使用切換字典的方式,則無法實現(xiàn)動態(tài)效果,于是,我在底圖層下使用一個圓形的繪圖,并在切換動作時進行簡單的縮放動畫即可(此處,我使用DataTrigger與切換按鈕的狀態(tài)進行綁定,在狀態(tài)改變時觸發(fā)動畫效果)

   <Ellipse Grid.ColumnSpan="3" Fill="#202020" RenderTransformOrigin="0.5,0.5" Margin="30" 
                 HorizontalAlignment="Left" VerticalAlignment="Bottom" Width="1" Height="1">
            <Ellipse.RenderTransform>
                <TransformGroup>
                    <ScaleTransform x:Name="BackEllipseScale"/>
                </TransformGroup>
            </Ellipse.RenderTransform>

            <Ellipse.Style>
                <Style TargetType="Ellipse">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=ThemeToggle,Path=IsChecked}" Value="True">
                            <Setter Property="Visibility" Value="Visible"/>
                            <DataTrigger.EnterActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation Duration="0:0:0.5" To="3500" Storyboard.TargetProperty="RenderTransform.Children[0].ScaleX">
                                            <DoubleAnimation.EasingFunction>
                                                <CubicEase EasingMode="EaseOut"/>
                                            </DoubleAnimation.EasingFunction>
                                        </DoubleAnimation>
                                        <DoubleAnimation Duration="0:0:0.5" To="3500" Storyboard.TargetProperty="RenderTransform.Children[0].ScaleY">
                                            <DoubleAnimation.EasingFunction>
                                                <CubicEase EasingMode="EaseOut"/>
                                            </DoubleAnimation.EasingFunction>
                                        </DoubleAnimation>
                                    </Storyboard>
                                </BeginStoryboard>
                            </DataTrigger.EnterActions>
                            <DataTrigger.ExitActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation Duration="0:0:0.5" To="0" Storyboard.TargetProperty="RenderTransform.Children[0].ScaleX">
                                            <DoubleAnimation.EasingFunction>
                                                <CubicEase EasingMode="EaseOut"/>
                                            </DoubleAnimation.EasingFunction>
                                        </DoubleAnimation>
                                        <DoubleAnimation Duration="0:0:0.5" To="0" Storyboard.TargetProperty="RenderTransform.Children[0].ScaleY">
                                            <DoubleAnimation.EasingFunction>
                                                <CubicEase EasingMode="EaseOut"/>
                                            </DoubleAnimation.EasingFunction>
                                        </DoubleAnimation>
                                    </Storyboard>
                                </BeginStoryboard>
                            </DataTrigger.ExitActions>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Ellipse.Style>
        </Ellipse>
  1. 切換前景色,這個就比較簡單了,使用基礎(chǔ)的更改資源字典即可。(當(dāng)前使用的資源都需要是 DynamicResource)
     private void ThemeToggle_Checked(object sender, RoutedEventArgs e)
        {
            SwitchTheme(true);
        }

        private void ThemeToggle_Unchecked(object sender, RoutedEventArgs e)
        {
            SwitchTheme(false);
        }
public void SwitchTheme(bool isDark)
        {
            var res = Application.Current.Resources.MergedDictionaries;
            ResourceDictionary dictionary = new ResourceDictionary();
            dictionary.Source = new Uri(isDark ? "./Dark.xaml" : "./Light.xaml", UriKind.Relative);
            res[1] = dictionary;
        }

項目地址:github文章來源地址http://www.zghlxwxcb.cn/news/detail-568258.html

到了這里,關(guān)于C# WPF實現(xiàn)動畫漸入暗黑明亮主題切換效果的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C#實現(xiàn)3D模型的動畫效果和交互設(shè)計

    介紹3D模型動畫效果和交互功能的概念和作用 介紹3D模型動畫效果和交互功能的概念和作用: 3D模型動畫效果是指通過對3D模型進行動態(tài)的變化和運動,使其呈現(xiàn)出生動的效果,增強用戶的視覺體驗。交互功能則是指用戶可以通過操作3D模型來實現(xiàn)一些特定的功能,例如旋轉(zhuǎn)、

    2024年02月08日
    瀏覽(45)
  • Android打造絲滑的Activity recreate重建(主題切換)過渡動畫

    Android打造絲滑的Activity recreate重建(主題切換)過渡動畫

    當(dāng)應(yīng)用程序支持多種語言或主題時,切換語言或主題通常需要重新啟動 Activity 以重新加載配置。雖然 recreate 是一種常用的重建 Activity 方法,但它不支持像在 Activity 之間切換時那樣使用過渡動畫。特別是在切換 淺色/深色 主題時,由于缺乏過渡動畫而顯得很生硬。為了提升改

    2024年02月22日
    瀏覽(21)
  • C# WPF 開源主題 HandyControl 的使用(一)

    C# WPF 開源主題 HandyControl 的使用(一)

    HandyControl是一套WPF控件庫,它幾乎重寫了所有原生樣式,同時包含80余款自定義控件(正逐步增加),下面我們開始使用。 1.1 創(chuàng)建項目 C#? WPF應(yīng)用(.NET Framework)創(chuàng)建項目 1.2 添加包 1.3??在App.xaml中引用HandyControl的皮膚和主題: 1.4?窗體文件xaml添加引用 xmlns:hc=\\\"https://handyorg.gi

    2024年02月13日
    瀏覽(10)
  • 【動畫進階】有意思的 Emoji 3D 表情切換效果

    【動畫進階】有意思的 Emoji 3D 表情切換效果

    最近,群里面的同學(xué)發(fā)了這么一個非常有意思是動畫效果: 原效果地址 -- CodePen Demo -- Letter Hop 當(dāng)然,原效果,主要使用了 GSAP 動畫庫以及一個 3D 文字 JavaScript 庫: 但是,這個效果,其實本身并不復(fù)雜。 本文,我們將不借助任何動畫庫,嘗試用最簡單的 CSS 和 JavaScript 代碼還

    2024年02月14日
    瀏覽(24)
  • Vue3 Transition組件給頁面切換加動畫效果

    Vue3 Transition組件給頁面切換加動畫效果

    本文分享一個Vue頁面組件之間切換的動畫效果,主要應(yīng)用在移動端設(shè)備,使用戶在切換頁面或者切換組件的時候交互體驗感更好一些,使用的是Vue3自帶的Transition組件。 先簡單介紹一下 Transition 組件,來自官方介紹: Transition 是一個內(nèi)置組件,這意味著它在任意別的組件中都

    2024年02月09日
    瀏覽(25)
  • three.js 緩動算法.easing(漸入相機動畫)

    three.js 緩動算法.easing(漸入相機動畫)

    效果:淡入,靠近物體 代碼:

    2024年01月19日
    瀏覽(28)
  • keil5編輯器主題配色美化使用(附六款暗黑主題)

    keil5編輯器主題配色美化使用(附六款暗黑主題)

    1、在軟件安裝目下備份以下三個文件, 更換主題只需要替換global.prop arm.prop global.prop global.prop.def 2、替換配置文件 將已經(jīng)準(zhǔn)備好的配色文件復(fù)制到UV4下替換 免費下載: 第一資源庫 ? 公眾號內(nèi)回復(fù): 1231 土豪下載: https://download.csdn.net/download/qq_43445867/88064961 Theme1: Theme2: Th

    2024年02月16日
    瀏覽(46)
  • Vivado設(shè)置暗黑界面、自動調(diào)用自定義主題

    Vivado設(shè)置暗黑界面、自動調(diào)用自定義主題

    ????????之前寫過一個版本的自定義黑色主題,參考該文章:? ? ??Vivado 自定義暗黑色主題字體、顏色,復(fù)用自定義主題。文末附黑色主題設(shè)置文件_vivado界面顏色設(shè)置_余二曰的博客-CSDN博客 ????????但 YeYBlackTheme 在使用過程中仍出現(xiàn)了不少問題,所以重新編輯了新的

    2024年02月03日
    瀏覽(176)
  • 前端vue可以左右滾動的切換的tabs tabs選項卡 滑動動畫效果 自動寬度

    前端vue可以左右滾動的切換的tabs tabs選項卡 滑動動畫效果 自動寬度,?閱讀全文下載完整代碼請關(guān)注微信公眾號: 前端組件開發(fā) 效果圖如下: ? ? ? ? ? #### 使用方法 ```使用方法 swiperTabList: [\\\"2023-06-10\\\",\\\"2023-06-11\\\",\\\"2023-06-12\\\",\\\"2023-06-13\\\",\\\"2023-06-14\\\",\\\"2023-06-15\\\"], //導(dǎo)航列表 swiperTabIdx:

    2024年02月08日
    瀏覽(21)
  • 使用C#的窗體顯示與隱藏動畫效果方案 - 開源研究系列文章

    使用C#的窗體顯示與隱藏動畫效果方案 - 開源研究系列文章

    今天繼續(xù)研究C#的WinForm的顯示動畫效果。 上次我們實現(xiàn)了無邊框窗體的顯示動畫效果(見博文:基于C#的無邊框窗體動畫效果的完美解決方案 - 開源研究系列文章 ),這次介紹的是未在任務(wù)欄托盤中窗體的顯示隱藏動畫效果的實現(xiàn)代碼。 1、 項目目錄; 下面是項目目錄,由基本

    2024年02月14日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包