본문 바로가기

Windows Phone 7

Windows Phone 7 에서 설정된 테마 알아오기

새로운 한주의 시작은 즐겁게 하고 계신가요?
이번에는 Windows Phone 7 의 테마 색상을 알아오는 방법에 대해서 알아보도록 하겠습니다.
Windows Phone 7 에서 테마의 설정은 Settings - theme 메뉴를 통해서 가능한데요. 에뮬레이터에서도 가능하니 한번 해보세요.
제공되는 테마는 dark (검은색 바탕의 테마) 와 light (하얀색 바탕의 테마) 가 있구요.
거기에다 타일의 색상 등을 결정하는 Accent color 를 설정하는 부분이 있습니다.

WP7 어플리케이션을 작성할 때 사용자에게 일관된 사용자 경험을 제공하기 위해서 사용자가 직접 선택한 테마를 잘 활용하는 것도 중요할 수 있는데요.
테마의 색상을 알아오는 부분은 http://devlicio.us/blogs/derik_whittaker/archive/2010/07/27/how-to-detect-the-theme-being-used-in-wp7.aspx 여기서 알 수 있었구요.
액센트 색상은 어떻게 알아올 수 있을까 생각해보았습니다.

위 링크된 포스트에서와 같이 테마의 이름을 직접 가져오기는 힘든것 같구요. 현재 폰의 ForegroundColor 또는 BackgroundColor를 이용하여 테마를 유추해내는 방법을 사용할 수 있습니다.

Color themeColor = (Color)Application.Current.Resources["PhoneForegroundColor"];

 

if (themeColor.ToString() == "#FFFFFFFF")

{

    this.PageTitle.Text = "Dark";

}

else if (themeColor.ToString() == "#DE000000")

{

    this.PageTitle.Text = "Light";

}


현재 어플리케이션 리소스 중 글자색상을 나타내는 PhoneForegroundColor 리소스를 가져와서, 그 색상이 흰색이라면 테마는 Dark 이고, 색상의 검은색이라면 테마는 Light 입니다.

물론, PhoneBackgroundColor 를 이용하는 방법도 있습니다. 위와 동일한 방법이지만, 배경색은 색상자체가 테마를 나타내는 거죠.

themeColor = (Color)Application.Current.Resources["PhoneBackgroundColor"];

 

if (themeColor.ToString() == "#FF000000")

{

    this.PageTitle.Text = "Dark";

}

else if (themeColor.ToString() == "#FFFFFFFF")

{

    this.PageTitle.Text = "Light";

}


그리고, 액센트 색상을 가져오기 위해서는 PhoneAccentColor 리소스를 이용하시면 됩니다.

Color accentColor = (Color)Application.Current.Resources["PhoneAccentColor"];

 

string accent = null;

 

switch (accentColor.ToString())

{

    case "#FFFF0097":

        accent = "magenta";

        break;

    case "#FFA200FF":

        accent = "purple";

        break;

    case "#FF00ABA9":

        accent = "teal";

        break;

    case "#FF8CBF26":

        accent = "lime";

        break;

    case "#FFA05000":

        accent = "brown";

        break;

    case "#FFE671B8":

        accent = "pink";

        break;

    case "#FFF09609":

        accent = "orange";

        break;

    case "#FF1BA1E2":

        accent = "blue";

        break;

    case "#FFE51400":

        accent = "red";

        break;

    case "#FF339933":

        accent = "green";

        break

}

 

this.PageTitle.Foreground = new SolidColorBrush(accentColor);

this.ApplicationTitle.Text = accent;


위 코드와 같이 현재는 윈도폰 테마에 대해서 직접적으로 알아 올 수 있는 방법은 없는듯 하지만, 위와 같이 약간의 코드를 이용하여 테마 및 액센트 색상을 가져올 수 있습니다.

끝까지 읽어주셔서 감사합니다.
즐거운 하루 되십시오.