C#/WPF

WPF 글씨에 그림자 효과 (Shadow Text)

기공이 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)