首先说一下SL2.0中显示字体的一种方便的办法(1.0中是要用downloader来做的,当然2.0也可以用WebClient来做,但可以用这种办法来代替,会自动生成WebClient,不用你来自己写)
下面讲一下具体步骤(用宋体举例):
1.将字体文件Copy到clientBin目录中(注意是XAP的那个clientBin)
2.设置FontFamily="simsun.ttc#simsun"
simsun.ttc是字体文件,simsun是字体名称
这样就可以显示出宋体了,简单吧。
用这种办法来做是很快,但是有个问题就是需要把整个字体文件下载,太大了,所以,更好的办法是这样的。
1.先将要显示的文字输入word,然后打印成XPS文件
2.将XPS文件改成zip文件,解压缩,然后将其中fonts文件夹下的文件打包成一个zip文件(例如:Fonts.zip)
3.将这个zip文件Copy到clientBin目录中
4.设置FontFamily="Fonts.zip#simsun"
这样就可以将字体文件减少到你用的这个几个字了。
另外,很多人不知道如何显示雅黑字体,是这样写的:
FontFamily="MSYH.TTF#Microsoft Yahei"
如果用后面的办法,需要在word中输入你要显示的雅黑的几个字,然后:
FontFamily="Fonts.zip#Microsoft Yahei"
最后附上WebClient的写法(TB是一个TextBlock的Name)
复制内容到剪贴板
代码:
public Page()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(onLoaded);
}
private void onLoaded(object sender, RoutedEventArgs e)
{
WebClient wc = new WebClient();
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
wc.OpenReadAsync(new Uri("Fonts.zip", UriKind.Relative));
}
private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
TB.FontSource = new FontSource(e.Result);
TB.FontFamily = new FontFamily("simsun");
}[
本帖最后由 h0575 于 2008-3-19 23:03 编辑 ]