`
wangdeshui
  • 浏览: 256867 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

我们知道silverlight只提供了一下几种字体,

image

当我们需要显示中文字时,虽然在blend2里是正常的,但是浏览时还出现方框 。 比如当我们输入“博客园”,blend2显示如下。

image

xaml文件内容如下:

<Canvas
    xmlns="http://schemas.microsoft.com/client/2007"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="179" Height="147"
    Background="White"
    xmlns:UntitledProject4="clr-namespace:UntitledProject4;assembly=ClientBin/UntitledProject4.dll"
    x:Class="UntitledProject4.Page;assembly=ClientBin/UntitledProject4.dll"
    x:Name="Page"
    >
    <TextBlock Width="147" Height="66" Canvas.Left="24" Canvas.Top="60" TextWrapping="Wrap" Foreground="#FFD8712A" Text="博客园" FontSize="48"/>
</Canvas>

但在浏览器里会显示成这样的。

image

那么我们看如何显示中文呢?

有三种方法:分别是文字对象(Glyphs )、绘图对象(Path)与图片对象(Image)三种,这三种区别如下:

 

方法一: 使用文字对象Glyphs  

      实例:(1)拷贝中文字到工程(比如simHei.ttf)

                     image

                 (2) 在xaml里加入如下代码(注意FontUri属性):

          image

               (3)在浏览器中浏览,我们可以看到Glyphs部分显示出了正确的字体,TextBlock未显示:

          image

这样似乎解决了,可是,Glyphs 显示中文字时,虽然以异步的方式从 Web服务器下载完整的字库,但是,我们知道中文字库一般都好几兆,同时下载整个字库也会有版权的法律问题。那么我们如何减少网络流量呢,就是我们可以只下载我们需要显示的字体,步骤如下:

a. 在word2007里写下需要显示的字体,比如“博客园”

image

b.选择打印,选择micorsoft xps document writer, 保存为simHei.zip(默认是xps,其实它就是一个压缩包).

c. 解压缩,找到documents\1\resources\Fonts\FF697615-FEE6-422B-A2CD-8D419E91303E.odttf,改名为mySimHei.ttf,拷贝到工程目录.

  改动fontUri="mySimHei.ttf"

<Glyphs
          FontUri = "mySimHei.ttf"
          FontRenderingEmSize = "100"
          UnicodeString       = "博客园"
          Fill                = "Yellow"
          OriginX             = "0"
          OriginY             = "100">
    </Glyphs>

d. 浏览,得到如下图,我们看到也显示正确

image

我们现在对比一下两个文件的大小,一个是746KB, 一个是9809KB,性能是显而易见的。

image

现在我们再做一个实验:

把要显示的字改为"博客园博客满园"

<Glyphs
          FontUri = "mySimHei.ttf"
          FontRenderingEmSize = "50"
          UnicodeString       = "博客园博客满园"
          Fill                = "Red"
          OriginX             = "0"
          OriginY             = "100">
    </Glyphs>

测试看到“满”字没有显示,原因很简单,就是我们没有在word里把要显示的“满”字打印出来。

 image

 

(未完待续...)

 

祝大家编程愉快

 

分享到:
评论

相关推荐

    Silverlight 控件之 WatermarkedTextBox

    在Silverlight开发中,WatermarkedTextBox是一个常见的控件,它提供了一种在文本框内显示提示信息的方式。这种提示信息会在用户未输入任何内容时显示,一旦用户开始输入,提示信息就会消失。这在用户界面设计中是一...

    silverlight视频聊天Demo

    在本文中,我们将深入探讨基于Silverlight技术实现的视频聊天Demo,这是一款适用于初学者学习和参考的应用实例。 首先,我们来了解Silverlight视频的核心技术。在Silverlight中处理视频主要依靠MediaElement控件,...

    (1)创建第一个Silverlight应用

    这段代码会在界面上创建一个按钮,居中对齐,显示文字"点击我"。为了响应按钮点击事件,你还需要在对应的MainPage.xaml.cs文件中添加事件处理代码: ```csharp private void Button_Click(object sender, ...

    Silverlight4

    Silverlight 4 提供了强大的多语言支持能力,包括双向文本显示、基于脚本的文字显示以及从右向左的语言布局等。这些功能大大增强了应用程序在国际化环境中的适应性。 #### 富文本框控件 (RichTextBox Control) 富...

    SilverlightApplication1 button

    例如,你可以在Page.xaml文件中找到一个Button元素的定义,如 `点击我" /&gt;`,这里的"Content"属性设定了按钮显示的文字。 4. **C#后台逻辑**:与XAML相辅相成的是C#代码,用于处理事件和业务逻辑。在App.xaml.cs或...

    Silverlight探秘系列课程(6):编写文字

    在第六部分的课程中,我们深入研究了Silverlight中的文字处理技术。 【描述】:“Silverlight探秘系列课程(6):编写文字” 这节课程的重点在于教授开发者如何在Silverlight环境中添加、格式化和动态控制文本内容。...

    silverlight DataGrid 不修改数据显示行号

    - 使用`DataGridTemplateColumn`定义了一个宽度为`0.05*`(即占据整个`DataGrid`宽度的5%)的列,并设置了该列的头部(`Header="δؼɹ"`),此处头部文字看起来像是误输入,实际应用中应该替换为有意义的文字,如...

    Silverlight4.0 Demo

    TextTrimming - 文字溢出时的显示方式 响应鼠标的滚轮事件 响应鼠标的右键事件 全屏的新特性 - 当其他程序获得焦点时,是否退出全屏模式 操作剪切板 - 支持获取或设置剪切板中的文本信息 隐式样式(Implicit...

    silverlight多语言的实现

    在IT行业中,Silverlight是一种已过时但曾经广泛使用的富客户端技术,主要用于开发交互式的Web应用程序。虽然现在它已被HTML5、CSS3和JavaScript等现代技术取代,但在过去,Silverlight为开发人员提供了丰富的功能,...

    silverlight简单跑马灯效果

    1. **创建UI元素**:首先,你需要在XAML中创建一个可以滚动的容器,如`TextBlock`或`ScrollViewer`,并设置其宽度和高度以适应跑马灯的显示需求。 2. **添加文本数据**:将需要滚动的文本添加到容器中。你可以直接...

    silverlight生成条码二维码实现代码

    而二维码则是二维条码的一种,能够存储更多的信息,如文字、网址、联系信息等,并且可以被手机等设备轻易读取。 在Silverlight中生成条码和二维码,通常会借助特定的库或组件。"SilverlightBarcode"这个文件可能...

    Silverlight简介

    Silverlight中的组件不仅可以显示数据,还可以响应用户的操作。例如,按钮组件(Button)可以响应点击事件(Click),从而触发相应的处理代码。这使得开发者能够创建具有交互性的用户界面。 #### Silverlight项目...

    ArcGIS 3.1 for Silverlight

    **ArcGIS 3.1 for Silverlight** 是Esri公司推出的一款基于Silverlight技术的Web GIS开发框架。这款产品主要用于构建交互式的、丰富的地理信息系统应用,让用户能够在浏览器中享受到类似桌面应用的体验。ArcGIS API ...

    silverlight的一个简单例子

    - 这行代码会在页面上创建一个文本块,并显示指定的文字。 4. **编译和运行** - 在完成UI设计后,按F5或点击"调试" -&gt; "开始调试",Visual Studio将启动Web服务器并打开默认浏览器,加载Silverlight应用程序。 -...

    Silverlight 手写板 电子签名

    2. **InkPresenter组件**:在Silverlight手写板应用中,`InkPresenter`是一个核心组件,它专门用于处理手写输入。`InkPresenter`接收来自触控设备的输入,如鼠标或触笔的运动轨迹,并将这些轨迹转换为可识别的手写...

    Silverlight在线编辑器

    在Silverlight在线编辑器中,用户可以享受到各种格式化选项,如同桌面文字处理软件一样。 3. **源代码下载**:提供源代码是为了让开发者能够学习、修改和扩展这个编辑器。通过查看和分析源代码,开发者可以了解其...

    Blend自带Silverlight示例MagnifyingGlass(放大镜)

    MagnifyingGlass 示例是 Blend 中的一个教学资源,它展示了如何在 Silverlight 应用程序中实现类似放大镜的效果。这个功能通常用于帮助用户更细致地查看界面中的小细节,例如图片、文字或图表。 首先,我们要了解 ...

    Silverlight完美入门.pdf

    - **Silverlight显示影像的两种途径**:说明Silverlight通过何种方式来显示图像,包括使用Image元素和通过其他控件加载图像的方法。 - **Image与Image元素详解**:深入探讨Image元素的用法,包括如何设置图像源、...

    Silverlight4新特性

    - **特点**:Silverlight 4 支持文档打印功能,允许用户直接从 Silverlight 应用程序中打印页面或文档,而无需任何额外插件。 - **应用场景**:适用于需要频繁打印报表、发票等文件的企业级应用程序。 **本地化和...

Global site tag (gtag.js) - Google Analytics