silverlight显示中文字(二):使用TextBlock+Downloader

一),建立一个Silverlight1.0 site.

silverlight显示中文字(二):使用TextBlock+Downloader

(二)修改page.xaml为如下内容

silverlight显示中文字(二):使用TextBlock+Downloader<Canvas xmlns="http://schemas.microsoft.com/client/2007"
silverlight显示中文字(二):使用TextBlock+Downloader        xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml" >
silverlight显示中文字(二):使用TextBlock+Downloader    
<!-- 進度列指示器 -->
silverlight显示中文字(二):使用TextBlock+Downloader    
<Canvas x:Name="ProgressIndicator" Canvas.Left="10"
silverlight显示中文字(二):使用TextBlock+Downloader       Canvas.Top
="10" Canvas.ZIndex="1">
silverlight显示中文字(二):使用TextBlock+Downloader        
<Rectangle x:Name="progressRectangle"
silverlight显示中文字(二):使用TextBlock+Downloader          Canvas.Left
="10"
silverlight显示中文字(二):使用TextBlock+Downloader          Height
="10" Width="0"
silverlight显示中文字(二):使用TextBlock+Downloader          Fill
="Maroon" />
silverlight显示中文字(二):使用TextBlock+Downloader        
<Rectangle
silverlight显示中文字(二):使用TextBlock+Downloader          
Canvas.Top ="-1"
silverlight显示中文字(二):使用TextBlock+Downloader          Canvas.Left
="9" Height="12"
silverlight显示中文字(二):使用TextBlock+Downloader          Width
="202"
silverlight显示中文字(二):使用TextBlock+Downloader          StrokeThickness
="1" Stroke="Black" />
silverlight显示中文字(二):使用TextBlock+Downloader        
<TextBlock
silverlight显示中文字(二):使用TextBlock+Downloader          
x:Name="progressText"
silverlight显示中文字(二):使用TextBlock+Downloader          Canvas.Top 
="-4" Canvas.Left="230"
silverlight显示中文字(二):使用TextBlock+Downloader          Text
="0%" FontSize="12" />
silverlight显示中文字(二):使用TextBlock+Downloader    
</Canvas>
silverlight显示中文字(二):使用TextBlock+Downloader    
<Canvas Name="myCanvas" Background="LightBlue" Width="600"
silverlight显示中文字(二):使用TextBlock+Downloader       Height
="400" Canvas.Top="0"  Canvas.ZIndex="0" >
silverlight显示中文字(二):使用TextBlock+Downloader          
<TextBlock Name="myTextBlock"
silverlight显示中文字(二):使用TextBlock+Downloader            TextWrapping
="Wrap"  Width="343" FontSize="30"
silverlight显示中文字(二):使用TextBlock+Downloader            Canvas.Top
="100" Canvas.Left="100" Loaded="handleLoad" Height="150.1"
silverlight显示中文字(二):使用TextBlock+Downloader                     Text
="国足继续恐韩">
silverlight显示中文字(二):使用TextBlock+Downloader        
</TextBlock>
silverlight显示中文字(二):使用TextBlock+Downloader    
</Canvas>
silverlight显示中文字(二):使用TextBlock+Downloader
</Canvas>

(3)

在page.xaml.js否面加入如下内容

       

silverlight显示中文字(二):使用TextBlock+Downloader     var delegate1;
silverlight显示中文字(二):使用TextBlock+Downloader  
var delegate2;
silverlight显示中文字(二):使用TextBlock+Downloader  
// Loaded 事件处理程序。
silverlight显示中文字(二):使用TextBlock+Downloader
  function handleLoad(sender, eventArgs)
silverlight显示中文字(二):使用TextBlock+Downloader  
{
silverlight显示中文字(二):使用TextBlock+Downloader  
// 取得Silverlight Plugin对象
silverlight显示中文字(二):使用TextBlock+Downloader
  var slPlugin = sender.getHost();
silverlight显示中文字(二):使用TextBlock+Downloader  
// 申明Downloader 对象
silverlight显示中文字(二):使用TextBlock+Downloader
  var downloader = slPlugin.createObject("downloader");
silverlight显示中文字(二):使用TextBlock+Downloader  
// 申明DownloadProgressChanged与Completed 事件委托
silverlight显示中文字(二):使用TextBlock+Downloader
  delegate1= downloader.addEventListener("downloadProgressChanged", onDownloadProgressChanged);
silverlight显示中文字(二):使用TextBlock+Downloader  delegate2
= downloader.addEventListener("completed", onCompleted);
silverlight显示中文字(二):使用TextBlock+Downloader  
// 初始化下载要求
silverlight显示中文字(二):使用TextBlock+Downloader
  downloader.open("GET""simhei.zip");
silverlight显示中文字(二):使用TextBlock+Downloader  
//下载未压缩的TTF字型也可以
silverlight显示中文字(二):使用TextBlock+Downloader
  //downloader.open("GET", "simhei.ttf");
silverlight显示中文字(二):使用TextBlock+Downloader
  // 开始下载
silverlight显示中文字(二):使用TextBlock+Downloader
  downloader.send();
silverlight显示中文字(二):使用TextBlock+Downloader  }

silverlight显示中文字(二):使用TextBlock+Downloader  
// Completed 事件处理常式
silverlight显示中文字(二):使用TextBlock+Downloader
  function onCompleted(sender, eventArgs)
silverlight显示中文字(二):使用TextBlock+Downloader  
{
silverlight显示中文字(二):使用TextBlock+Downloader  
// 移除DownloadProgressChanged 事件与其事件处理程序的委托
silverlight显示中文字(二):使用TextBlock+Downloader
  sender.removeEventListener("downloadProgressChanged", delegate1);
silverlight显示中文字(二):使用TextBlock+Downloader  
// 移除Completed 事件与其事件处理常式的委托
silverlight显示中文字(二):使用TextBlock+Downloader
  sender.removeEventListener("completed", delegate2);
silverlight显示中文字(二):使用TextBlock+Downloader  
var textblock = sender.findName("myTextBlock");
silverlight显示中文字(二):使用TextBlock+Downloader  textblock.setFontSource(sender);
silverlight显示中文字(二):使用TextBlock+Downloader  textblock.fontFamily
="SimHei";
silverlight显示中文字(二):使用TextBlock+Downloader  
//将Downloader对象设定为null
silverlight显示中文字(二):使用TextBlock+Downloader
  sender = null;
silverlight显示中文字(二):使用TextBlock+Downloader  }

silverlight显示中文字(二):使用TextBlock+Downloader  
// 更新进度条
silverlight显示中文字(二):使用TextBlock+Downloader
  function onDownloadProgressChanged(sender, eventArgs)
silverlight显示中文字(二):使用TextBlock+Downloader  
{
silverlight显示中文字(二):使用TextBlock+Downloader  
var progressText = sender.findName("progressText");
silverlight显示中文字(二):使用TextBlock+Downloader  
var progressRectangle = sender.findName("progressRectangle");
silverlight显示中文字(二):使用TextBlock+Downloader  
// 计算下载的百分比
silverlight显示中文字(二):使用TextBlock+Downloader
  var percentage = Math.floor(sender.downloadProgress * 100);
silverlight显示中文字(二):使用TextBlock+Downloader  
// 更新进度条的Rectangle 与TextBlock 对象
silverlight显示中文字(二):使用TextBlock+Downloader
  progressText.text = percentage + "%";
silverlight显示中文字(二):使用TextBlock+Downloader  progressRectangle.width 
= percentage * 2;
silverlight显示中文字(二):使用TextBlock+Downloader  }

(4) 压缩完整的simHei.ttf为simHei.zip,拷贝到项目的目录

(5)选择Test.site,先看到下面的第一章图,等下载完后,就会显示正常了

silverlight显示中文字(二):使用TextBlock+Downloader

silverlight显示中文字(二):使用TextBlock+Downloader

有朋友问了,那能不能只下载部分使用的字体呢? 我想是可以的,但是按照之前的方法却怎么也显示不出来,那位朋友知道是什么原因,麻烦告诉我一生,谢谢。

还有当我创建Silver Light Application(Orcas)项目,也就是1.1的项目时,不管是完整的,部分的都不行。

 本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2008/02/18/1072458.html如需转载请自行联系原作者


王德水

上一篇:codeblocks创建和使用静态库(C语言)


下一篇:极限编程(ExtremeProgramming,简称XP)