[2011.12.03] Windows Phone 系统界面资源使用与中文字体显示优化

Windows phone 本身提供了很多的界面资源。

参照http://msdn.microsoft.com/en-us/library/ff769552(v=vs.92).aspx

今天要说的是怎么好好利用他们。

首先交代一个很基础但是一直被忽视的小Tip

 

一,关于中文等线字体的使用

我们知道Mango以来,WP是支持原生中文显示的,只要你可以把系统的Display Language改成中文。

你就可以使用等线字体,也就是系统显示的字体。否则默认会给你显示那个畸形的没经过优化GDI渲染的雅黑。

但有个问题是为什么我的软件默认language设置成了zh-CN,系统资源里的PhoneFontFamilyNormal却还是雅黑?

这个问题我考虑了很久,甚至更改默认的PhoneApplicationPage Style把字体改成DengXian。

但是这个不是解决问题的根本办法。因为这样英文字体也会用DengXian显示出来,效果是非常畸形的。

那么要怎么像系统一样英文继续使用英文字体,而中文用等线显示呢。

其实很简单,只要更改控件相应的Language属性就可以了。

更改了Language之后,所有的StaticResource资源会指向你设置的Language对应的资源。

例如我把某个Control的Language设置成zh-CN后,这个Control里面设置的PhoneFontFamilyNormal就是中文等线,英文Tahoma了。

知道了这个以后就很简单了,改变这一切就一句话。在App.xaml.cs.里面:

// Do not add any additional code to this method->不要理系统给的这句xx注释。。。 
private void InitializePhoneApplication()
{
// 其他代码忽略了…
RootFrame = new PhoneApplicationFrame()
{
Language = System.Windows.Markup.XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentCulture.Name)
};
// 其他代码忽略了…
}

然后,看看你的界面。多爽的等线字体!(虽然在白色背景下会发虚)

自动调配中文等线显示,英文Tahoma(系统原装)!

 

二,利用系统资源调配应用的主题配色

好吧我承认我坑爹了。。。我自己对OpacityMask都不太懂。等我研究会儿~哈。

posted @ 2011-12-03 20:12  akita  阅读(801)  评论(1编辑  收藏  举报