티스토리 뷰

WindowsPhone

WP7 개발 기초 - 공유 브러시

생각많은 소심남 2012. 1. 10. 01:46
자 그럼 공유 브러시를 효율적으로 사용해봅시다.

일단 목적은 TextBlock을 여러개 삽입하고 각각의 Foreground에 같은 LinearGradientBrush를 적용하기를 원하는 겁니다. 기존에는 각각의 TextBlock에 일일이 설정해줘야 했지만 공유 브러시를 쓴다면 코드의 줄은 급격히 줄어들겁니다.

우선 첫번째 해야 할 일은 App의 구동시 LinearGradientBrush를 미리 정의해놓는 겁니다. 이에 관한 항목은 MainPage.xaml상에 Resource라는 Collection을 만들어서 정의합니다.


 PhoneApplicationPage내에서 정의되면 됩니다. 저는 맨처음 폰트 정의가 된곳 바로 밑에 이렇게 작성했습니다.
지금 나온중에 x:key라고 정의되어 있는 부분이 있는데 이는 다른 구문에서 불러올때 이용하는 키 역할을 합니다. 이에 대한 설명은 뒤에서 하기로 하겠습니다. 그냥 서랍을 여는 키라고 보시면 될거 같네요.

그러면 이제 Textblock에서 이 brush라는 키를 불러오면 됩니다. 다음과 같이 ContentPanel상에 정의합니다.

 


그러면 다음과 같은 결과를 확인할 수 있습니다.
 


지금 Pink와 Skyblue가 Linear하게 색이 변하는 것을 확인할 수 있습니다. 그런데 보니까 위의 구문에 눈에 띄는게 있네요.


음... TextBlock상에도 이렇게 더 요약하는 방법이 있네요. 그럼 위 코드도 간단하게
 


으로 줄일 수 있게 됩니다.
그럼 Resource에 특성을 하나 더 넣어봅시다. 이번에는 Margin입니다. 사전에 알고 있어야 하는건 Margin이 Thickness 형이라는 겁니다. 자세한건 링크로 찾아보세요.

그럼 다음과 같이 Resource에 삽입됩니다.
 



다른 예로는 Fontsize를 Resouce에 삽입하는 겁니다. 그런데 이는 조금 복잡합니다. Fontsize를 공유하는데 있어서 속성은 double형인데 기본 xaml상에서는 double속성에 대해서 정의가 되어있지 않습니다. 이는 system namespace에 정의되어 있기에 따로 선언해줘야합니다.
그냥 이렇게만 써줍니다.  

 
이 작업을 마치면 이제 double형을 사용할 수 있게됩니다. 또하나 고려해야 될건 바로 double을 사용할 수 있는게 아니라 System:Double로 정의해줘야 한다는 겁니다. Resource에 관한 부분은 이정도로 됩니다.


 그럼 이제 ContentPanel상에 TextBlock을 여러개 삽입해보겠습니다.
 


기존에 일일히 사이즈가 얼마 였느니 Margin을 얼마로 두니를 일일이 설정할때보다 코딩의 줄수가 확 줄었습니다. 이에 대한 결과물은 다음과 같습니다.



 자 그럼 한번 더 테스트해볼 건 Grid상에 Resource를 설정하는 겁니다. ContentPanel을 담당하는 Grid속에 다음과 같
이 줍니다.


그에 따라서 결과도 

 줄어드는 것을 확인할 수 있습니다. 이 내용도 전에 다뤘습니다. 전역적인 설정보다 지역적으로 설정된 것을 우선 순위로 받아들인다고 말이지요. 이는 그리고 시각적 트리 형태를 갖출겁니다.

여기까지가 공유 브러시에 관한 간단한 내용이었습니다.
다음 포스팅에선 이런 공유 브러시를 묶어서 하나의 스타일로 형성하는 방안에 대해 언급하겠습니다. 


댓글