扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:奚江华 来源:msdn中国 2007年11月20日
关键字:
在 TextBlock 中指定中文字没有什么特别的地方,设定方式与
但是有个比较特别的地方是需要额外指定 Downloader 的载入程式,而就是在 Canvas 或 TextBlock 的 Loaded 事件中指定 JavaScript 事件,呼叫 Downloader 执行非同步的字型档载入
Step 3:建立 Downloader
请在 TextBlockDownloaderTTF.xaml.js 程式中建立 Downloader 相关程式:
TextBlockDownloaderTTF.xaml.js
以下是引用片段: var delegate1; var delegate2; // Loaded 事件处理常式。 function handleLoad(sender, eventArgs) { // 取得Silverlight Plugin物件 var slPlugin = sender.getHost(); // 建立Downloader 物件 var downloader = slPlugin.createObject("downloader"); // 建立DownloadProgressChanged与Completed 事件委派 delegate1= downloader.addEventListener("downloadProgressChanged", onDownloadProgressChanged); delegate2= downloader.addEventListener("completed", onCompleted); // 初始化下载要求 downloader.open("GET", "Fonts/Kaiu.zip"); //下载未压缩的TTF字型也可以 //downloader.open("GET", "Fonts/Kaiu.ttf"); // 开始传送下载 downloader.send(); } // Completed 事件处理常式 function onCompleted(sender, eventArgs) { // 移除DownloadProgressChanged 事件与其事件处理常式的委派关係 sender.removeEventListener("downloadProgressChanged", delegate1); // 移除Completed 事件与其事件处理常式的委派关係 sender.removeEventListener("completed", delegate2); var textblock = sender.findName("myTextBlock"); textblock.setFontSource(sender); textblock.fontFamily="DFKai-SB"; //将Downloader物件设定为null sender = null; } // 负责更新进度列 function onDownloadProgressChanged(sender, eventArgs) { var progressText = sender.findName("progressText"); var progressRectangle = sender.findName("progressRectangle"); // 计算下载的百分比 var percentage = Math.floor(sender.downloadProgress * 100); // 更新进度列的Rectangle 与TextBlock 物件 progressText.text = percentage + "%"; progressRectangle.width = percentage * 2; } |
程式说明:
onCompleted 事件是用来下载字型档,它是本程式最重要的核心,而 onDownloadProgressChanged 是用来显示下载进度的百分比,不过是为了人性化,实质上可有可无。完成后请执行 TextBlockDownloaderTTF.html 程式,执行画面如下图。
图 7 TextBlock 显示 TTF 完整字型档
范例四 以 Downloader 下载部分嵌入字型档 ODTTF 供 TextBlock 使用
在前面介绍过 Glyphs 使用部分嵌入字型档 ODTTF,ODTTF 字型档的优点是所需的档案大小可以减少为原来的好几倍,而 ODTTF 不止 Glyphs 可以使用,同样的 TextBlock 也可以使用,只要透过 Downloader 下载 ODTTF 即可,请参考以下的步骤说明:
Step 1:製作部分嵌入字型档 ODTTF
在此製作一个“01026A73-2351-5325-5665-E8572E1A1805.odttf”的正黑体字型档,里面所包含的文字为:“千山鸟飞绝,万径人踪灭,孤舟簑笠翁,独钓寒江雪”,并将其档
Step 2:建立 XAML 程式主体
请参考 TextBlockDownloaderODTTF.xaml 的程式主体,以下为 XAML 程式码:
TextBlockDownloaderODTTF.xaml
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者