Silverlight 커스텀 컨트롤을 하나 만들어봤습니다.
Silverlight이 현재는 기본으로 제공되는 컨트롤이 몇 개 없어서 단순한 버튼 조차 만들어 써야 하는데요, 내친김에 VISTA의 글래스 스타일로 만들었어요.
디자인 감각은 꽝이라 비슷하게 만들었는지 어쨌는지 모르겠네요. =ㅅ=

(여기에서 테스트 가능 : http://gongdo.oranc.co.kr/Silverlight/Samples/GlassButton/)

사용자 삽입 이미지

연습 삼아 만들어본거라 문서화는 제대로 하지 않았지만 코드 안에다가 주석은 충분히 달았으니 관심 있으신 분은 한번 소스를 받아보세요.
GlassButton.zip

GlassButton 샘플


간단하게 컨트롤에 대해 요약할께요.
Namespace : Gongdosoft.Silverlight.UX
Class Name : GlassButton
Properties :
  • Width : 버튼 전체의 너비
  • Height : 버튼 전체의 높이
  • Radius : 버튼의 둥글기 정도(픽셀 단위, 네 모서리에 적용)
  • Background : 배경색상 브러쉬
  • Foreground : 전경색상 브러쉬
  • LightColor : 마우스를 올렸을 때 표시될 색상값
  • ShadowMask : 버튼을 클릭했을 때 버튼을 마스킹하는 브러쉬
  • Opacity : 버튼 전체의 불투명도(0~1)
  • OpacityMask : 버튼 전체의 불투명도 마스크 브러쉬
  • BackgroundOpacity : 버튼 배경색상의 불투명도
  • Caption : 버튼의 캡션(문자열)
  • CaptionHorizontalAlign : 캡션의 수평 정렬
  • CaptionVerticalAlign : 캡션의 수직 정렬
  • FontUri : 다운로드할 폰트 또는 폰트가 들어있는 Zip의 경로를 설정
  • FontFamily : 사용할 폰트 종류(현재 한글은 Arial Unicode MS만 사용가능)
  • FontSize : 폰트의 크기(픽셀 단위)
  • FontStyle : 폰트의 스타일(이탤릭)
  • FontWeight : 폰트의 두께
  • TextDecoration : 폰트의 꾸밈(밑줄)
  • TextWrapping : 줄바꿈 속성(현재는 제대로 동작하지 않음)
Events :
  • DownloadCompleted : FontUri에서 설정한 폰트를 다운로드 완료했을 때
  • DownloadFailed : FontUri에서 설정한 폰트를 다운로드 실패했을 때
  • DownloadProgress : FontUri에서 설정한 폰트를 다운로드 하는 진행 과정
  • Clicked : 버튼을 클릭했을 때

나름대로 생각은 많이 했는데 제일 걸리는 부분은 한글 문제에요.
내부적으로 Glyphs가 아닌 TextBlock을 사용했는데요 때문에 현재 사용할 수 있는 폰트는 Arial Unicode MS 폰트밖에 없어요.
그 외의 폰트라면 영문은 제대로 표시되니까 FontUri에 폰트 파일의 경로를 설정하고 FontFamily에 폰트 이름을 설정하면 작동할거에요.

그 외에 몇가지 속성은 XAML에서 설정할 수 없는 문제가 있는데 이건 아무래도 Silverlight의 미완료된 부분인 것 같아서 좀 더 알아봐야 할 것 같네요.

사용기나 버그 리포트 대환영입니다. :)

신고
Posted by gongdo


티스토리 툴바