开发者社区> 最美的回忆> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介:
+关注继续查看

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

image

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

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

(3)

在page.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""simhei.zip");
  
//下载未压缩的TTF字型也可以
  //downloader.open("GET", "simhei.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
="SimHei";
  
//将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;
  }

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

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

image

image

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

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

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


王德水

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用ArcGIS API for Silverlight实现地形坡度在线分析
原文:使用ArcGIS API for Silverlight实现地形坡度在线分析           苦逼的研究生课程终于在今天结束了,也许从今以后再也不会坐在大学的课堂上正式的听老师讲课了,接下来的时间就得开始找工作了.....前段时间一直比较忙,上课,考试,论文,以及联系实习单位...现在就差实习还没有着落了。
1190 0
Silverlight:分包下载及SEO优化方案
一、按模块分包 一般大型的Silverlight应用,都会按模块分解成多个silverlight project,编译后就有多个xap包,然后在需要用到的场景按需加载。我近期开发的这个项目不需要全站Silverlight,而是aspx混合silverlight,说得更白点,就是把相应的子模块xap包嵌入aspx. 这样分包就简单多了:直接用js控制dom元素,修改object元素中的source,动态设置成不同的xap即可实现无刷新的加载不同模块。
617 0
Silverlight Spy 2 源代码查看器
你可以在这里下载.请取保这个已经安装. Silverlight Spy 可以在sl运行时来查看sl中的元素.这对debug是非常又帮助的. 使用:按住Ctrl+Shift移动鼠标到Silverlight上.
676 0
2286
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载