WPF - 陰影效果

来源:https://www.cnblogs.com/wjygxjz/archive/2023/09/04/17676029.html
-Advertisement-
Play Games

基本屬性: 屬性 說明 描述 Color 設置陰影效果背景色 Color="Red" ShadowDepth 設置陰影的偏移度 ShadowDepth="5" Direction 設置陰影的角度 Direction="-45" BlurRadius 設置陰影模糊程度 BlurRadius="20" ...


基本屬性:

屬性 說明 描述
Color 設置陰影效果背景色 Color="Red"
ShadowDepth 設置陰影的偏移度 ShadowDepth="5"
Direction 設置陰影的角度 Direction="-45"
BlurRadius 設置陰影模糊程度 BlurRadius="20"
Opacity 設置陰影透明度 Opacity="1"
陰影效果介紹: 在WPF中,你可以使用DropShadowEffect屬性為控制項添加陰影效果。DropShadowEffect是System.Windows.Media.Effects命名空間下的一個類,它提供了一種簡單的方法來為控制項添加陰影效果。 下麵是一個簡單的示例,演示如何在WPF中為按鈕添加陰影效果:
<Button Width="100" Height="50">
    <Button.Effect>
        <DropShadowEffect ShadowDepth="10" BlurRadius="20" Color="Gray"/>
    </Button.Effect>
    Click Me
</Button>
在上面的示例中,我們為按鈕的Effect屬性設置了一個DropShadowEffect對象。ShadowDepth屬性控制陰影的深度,BlurRadius屬性控制陰影的模糊程度,Color屬性控制陰影的顏色。 你可以根據需要調整這些屬性的值來獲得不同的陰影效果。 陰影效果應用範圍: DropShadowEffect控制項適用於需要添加陰影效果的各種場合,例如在按鈕、標簽、文本框等控制項上添加陰影,以增強控制項的立體感和視覺效果。 此外,DropShadowEffect控制項還可以用於實現陰影的動態效果,例如在滑鼠懸停時改變陰影的顏色、大小等屬性,以提供更豐富的交互體驗。 總之,DropShadowEffect控制項是一種非常實用的工具,可以在WPF應用程式中增強視覺效果和交互體驗 陰影效果是UIElement類提供,所有繼承自UIElement類的控制項都可以實現陰影效果。

代碼實例:  由於時間關係,代碼實例都寫在一起了。

<Grid>
    
    <StackPanel>
        <!--設置陰影效果-->
        <Border Width="100" Height="50" Background="Orange">
            <!--Effect設置影響效果標簽-->
            <Border.Effect>
                <!--在目標周圍繪畫陰影效果-->
                <DropShadowEffect Color="Red" ShadowDepth="0"/>
            </Border.Effect>
        </Border>
        
        <!--設置陰影效果的基本屬性-->
        <Border Margin="0 10" Width="100" Height="50" Background="Orange">
            <!--Effect設置影響效果標簽-->
            <Border.Effect>
                <!--預設顯示黑色陰影效果-->
                <!--<DropShadowEffect/>-->
                <!--Color設置陰影顏色  ShadowDepth設置陰影偏移度 Direction設置陰影的角度 BlurRadius="20"設置模糊的程度 Opacity="1"設置透明度-->
                <!--大多數時候使用不設置陰影的偏移方向-->
                <DropShadowEffect Color="Red" ShadowDepth="5" Direction="-45" BlurRadius="20" Opacity="1"/>
            </Border.Effect>
        </Border>
        
        
        <!--設置陰影效果偏移度-->
        <Border Margin="0 10" Width="100" Height="50" Background="Orange">
            <!--Effect設置影響效果標簽-->
            <Border.Effect>
                <!--ShadowDepth設置陰影偏移度 -->
                <DropShadowEffect Color="Red" ShadowDepth="5"/>
            </Border.Effect>
        </Border>

        <!--實現旋轉陰影效果-->
        <Border Width="100" Height="50" Background="Orange">
            <!--設置旋轉效果-->
            <Border.RenderTransform>
                <!--Angle設置旋轉角度-->
                <RotateTransform Angle="45"/>
            </Border.RenderTransform>
            <!--Effect設置影響效果標簽-->
            <Border.Effect>
                <!--Color設置陰影顏色  ShadowDepth設置陰影偏移度 Direction設置陰影的角度-->
                <DropShadowEffect Color="Red" ShadowDepth="5" Direction="-45"/>
            </Border.Effect>
        </Border>

        <!--給文本設置陰影效果-->
        <TextBlock Text="Hello">
            <TextBlock.Effect>
                <!--Color設置陰影顏色  ShadowDepth設置陰影偏移度 Direction設置陰影的角度 BlurRadius="20"設置模糊的程度 Opacity="1"設置透明度-->
                <DropShadowEffect Color="Gray" ShadowDepth="0" BlurRadius="3"/>
            </TextBlock.Effect>
        </TextBlock>

        <!--實現陰影效果-->
        <Border Margin="0 60 0 0" Width="100" Height="30" BorderBrush="Green" BorderThickness="1" CornerRadius="10">
            <!--這裡設置隱形效果是對整個border內所有的控制項生效,只要是非透明不部分都給它做陰影效果-->
            <Border.Effect>
                <DropShadowEffect Color="Red" ShadowDepth="0" Direction="-45" BlurRadius="5" Opacity="1"/>
            </Border.Effect>
            <TextBlock Text="Hello" VerticalAlignment="Center" HorizontalAlignment="Center"/>
        </Border>

        <!--實現只有外部顯示陰影效果,不影響內部控制項-->
        <!--Background="White" 設置內容區域為白色背景 - 樣式組合可以千變萬化-發揮想象力-->
        <Border Margin="0 10 0 0" Width="100" Height="30" BorderBrush="Green" BorderThickness="1" CornerRadius="10"
                Background="White">
            <!--這裡設置隱形效果是對整個border內所有的控制項生效,只要是非透明不部分都給它做陰影效果-->
            <Border.Effect>
                <DropShadowEffect Color="Red" ShadowDepth="0" Direction="-45" BlurRadius="5" Opacity="1"/>
            </Border.Effect>
            <TextBlock Text="Hello" VerticalAlignment="Center" HorizontalAlignment="Center"/>
        </Border>

        <!--實現在內部顯示陰影效果的情況下不影響內部的其它控制項。-->
        <Grid Margin="0 10 0 0">
            <!--ClipToBounds="True" 超出區域部分的陰影效果進行裁切-->
            <Border  Width="100" Height="30" BorderBrush="Green" BorderThickness="1" CornerRadius="0"
    ClipToBounds="True">
                <!--這裡設置隱形效果是對整個border內所有的控制項生效,只要是非透明不部分都給它做陰影效果-->
                <Border.Effect>
                    <DropShadowEffect Color="Red" ShadowDepth="0" Direction="-45" BlurRadius="5" Opacity="1"/>
                </Border.Effect>
            </Border>
            <!--這裡文字放在boder外面,這樣文字部分可以不顯示陰影效果。-->
            <TextBlock Text="Hello" VerticalAlignment="Center" HorizontalAlignment="Center"/>
        </Grid>

        <!--實現在設置圓角的情況下在內部顯示陰影效果-->
        <Grid Margin="0 10 0 0">
            <!--ClipToBounds="True" 超出區域部分的陰影效果進行裁切-->
            <Border  Width="100" Height="30" BorderBrush="Green" BorderThickness="1" CornerRadius="10">
                <!--這裡設置告訴boder按照指定尺寸進行裁切-->
                <Border.Clip>
                    <!--Rect="0 0 100 30" 圖形坐標(x,y,w,h)(x軸坐標,y軸坐標,寬度,高度) RadiusX="10" X軸圓角度-->
                    <RectangleGeometry Rect="0 0 100 30" RadiusX="10" RadiusY="10"/>
                </Border.Clip>
                <!--這裡設置隱形效果是對整個border內所有的控制項生效,只要是非透明不部分都給它做陰影效果-->
                <Border.Effect>
                    <DropShadowEffect Color="Red" ShadowDepth="0" Direction="-45" BlurRadius="5" Opacity="1"/>
                </Border.Effect>
            </Border>
            <!--這裡文字放在boder外面,這樣文字部分可以不顯示陰影效果。-->
            <TextBlock Text="Hello" VerticalAlignment="Center" HorizontalAlignment="Center"/>
        </Grid>
    </StackPanel>
</Grid>
  效果展示:

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • PE結構是`Windows`系統下最常用的可執行文件格式,理解PE文件格式不僅可以理解操作系統的載入流程,還可以更好的理解操作系統對進程和記憶體相關的管理知識,DOS頭是PE文件開頭的一個固定長度的結構體,這個結構體的大小為64位元組(0x40)。DOS頭包含了很多有用的信息,該信息可以讓Windows... ...
  • 在日常寫Java的時候,對於字元串的操作是非常普遍的,其中最常見的就是對字元串的組織。也因為這個操作非常普遍,所以誕生了很多方案,總下來大概有這麼幾種: - 使用`+`拼接 - 使用`StringBuffer`和`SpringBuilder` - `String::format` and `Stri ...
  • > 本文深入探討了Go編程語言中的核心概念,包括標識符、關鍵字、具名函數、具名值、定義類型、類型別名、包和模塊管理,以及代碼塊和斷行。這些元素是構成Go程式的基礎,也是編寫高質量代碼的關鍵。 > 關註TechLeadCloud,分享互聯網架構、雲服務技術的全維度知識。作者擁有10+年互聯網服務架構、 ...
  • 最近接了一個新需求,業務場景上需要在原有基礎上新增2個欄位,介面新增參數意味著很多類和方法的邏輯都需要改變,需要先判斷是否屬於該業務場景,再做對應的邏輯。原本的打算是在入口處新增變數,在操作數據的時候進行邏輯判斷將變數進行存儲或查詢。 ...
  • # 項目名稱:KeepGoing(繼續前進) ## 介紹 工作後,學習的腳步一直停停走走,希望可以以此項目為基礎,可以不斷的迫使自己不斷的學習以及成長 將以Girvs框架為基礎,從壹開始二次開發一個前後端管理框架 在這過程中一步步去學習使用到的技術點,也同時會將在此過程中遇到的問題進行分享 項目地址 ...
  • ## 背景 - 需要對Excel進行讀取和寫入,目前使用Dotnet6開發環境,故直接使用。 - 達到的效果:相容`.xls`和`.xlsx`,識別行為空自動跳過,識別顯示值,識別格式內容 ## 步驟 - `Dotnet 6`Nuget 安裝 `NPOI`, 具體版本 `2.6.1`,tips: 搜 ...
  • # Unity UGUI的Dropdown(下拉菜單)組件的介紹及使用 ## 1. 什麼是Dropdown組件? Dropdown(下拉菜單)是Unity UGUI中的一個常用組件,用於在用戶點擊或選擇時顯示一個下拉菜單,提供多個選項供用戶選擇。 ## 2. Dropdown組件的工作原理 Drop ...
  • 上篇文章講述了[C#委托和事件知識點](http://mp.weixin.qq.com/s?__biz=MzI2NDE1MDE1MQ==&mid=2650851553&idx=1&sn=b1c601eaf4bb4f2898cbd418fa0ae426&chksm=f1456509c632ec1f8f ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...