ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • WPF 글씨에 그림자 효과 (Shadow Text)
    C#/WPF 2017. 1. 13. 13:55

    폰트에는 따로 그림자를 넣어주는 효과가 없습니다. 그림자는 Label과 같은 컨트롤에 Effect를 통해서 넣어주어야 합니다.


    (해당 그림자 효과는 Lable, TextBox, TextBlock 등 여러 곳에 사용이 가능합니다. Label로 예를 들어 설명하겠습니다.)


    DropShadowEffect 라는 클래스를 통해서 해주면 됩니다. (System.Windows.Media.Effects.DropShadowEffect)


    이 클래스의 속성들을 통해 그림자를 설정해준 뒤 Label에 적용시켜 주시면 됩니다.


    1
    2
    System.Windows.Media.Effects.DropShadowEffect shadow = new System.Windows.Media.Effects.DropShadowEffect();
    lbl.Effect = shadow;
    cs


    DropShadowEffect의 대표적인 속성들을 소개해 드리고, 활용하는 법을 알려드리겠습니다.


    BlurRadius : 그림자의 번지는 정도를 설정합니다. 클수록 더 넓지만 흐릿한 그림자가 됩니다.

    Color : 그림자의 색을 설정합니다. System.Windows.Media.Color 형을 사용합니다.

    Direction : 그림자의 방향을 설정합니다. 3시방향이 0도로 시작하여 반시계 방향으로 증가합니다. 0 ~ 360 사이의 값 설정

    Opacity : 그림자의 불투명도를 설정합니다. 0 ~ 1 사이의 값 설정

    ShadowDepth : 그림자의 거리를 설정합니다. 클수록 더 뒤쪽에 그림자가 설정됩니다.


    생성자는 기본 생성자 밖에 없습니다. 기본 생성자로 생성시에 각 속성들은 


    BlurRadius : 5

    Color : #FF000000

    Direction : 315

    Opacity : 1

    ShadowDepth : 5


    로 설정됩니다.



    그림자를 없애는 법은 


    1. 보이지 않는 그림자를 만드셔서 적용시키셔도 되고, 

    1
    2
    3
    4
    System.Windows.Media.Effects.DropShadowEffect shadow = new System.Windows.Media.Effects.DropShadowEffect();
    shadow.BlurRadius = 0;
    shadow.ShadowDepth = 0;
    lblMain.Effect = shadow;
    cs


    2. 새로운 Label을 만든 뒤 Label의 초기값 Effect를 사용하셔도 되며(추천), 

    1
    lbl.Effect = new Label().Effect;
    cs


    3. 그림자를 적용시키지 않은 컨트롤의 Effect를 가져와도 됩니다.

    1
    lbl.Effect = Effect;
    cs

    (우측의 Effect는 해당 코드가 있는 Window의 Effect를 가져오는 것입니다.)





    예) Label에 있는 텍스트 아래쪽파란색 그림자를 만드는 예 입니다.


    1
    2
    3
    4
    5
    System.Windows.Media.Effects.DropShadowEffect shadow = new System.Windows.Media.Effects.DropShadowEffect();
    shadow.Color = Color.FromRgb(0, 0, 255);
    shadow.Direction = 270;
     
    lbl.Effect = shadow;
    cs


    (그림자가 잘 보이게 하기 위해 글자색을 바꿨습니다.)


    참조.(msdn)



    댓글

GiGong