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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...