原文地址:http://support.esrichina-bj.cn/2009/0728/1007.html

文章编号 : 37033

软件: ArcGIS API for Microsoft Silverlight/WPF 9.3.1

操作系统: N/A

摘要:

         ArcGIS API for Microsoft Silverlight/WPF 包含一个PictureMarkerSymbol 类,使用一个图片图标来渲染graphic点. 象API中的其它符号一样,它的内容通过一个控件模板定义。

PictureMarkerSymbol 控件模板定义如下:

<ControlTemplate xmlns="http://schemas.microsoft.com/client/2007"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Image Source="{Binding Symbol.Source}"

Opacity="{Binding Symbol.Opacity}"

Stretch="Fill"

Width="{Binding Symbol.Width}"

Height="{Binding Symbol.Height}" />

</ControlTemplate>

当分配给一个graphic时(例如,Graphic.Symbol),一个Image控件实例被创建。如果同一个picture marker symbol被分配给500个graphic点,图片就被解码500次。导致的结果,初始graphic渲染将变得相对缓慢。尽管符号被绑定到一个图片资源,并且因此在500个graphics中共享(仅下载一次),但是图片解码不会共享。
为了减少与PictureMarkerSymbol使用的Image控件相关的经常开销,使用ImageBrush为符号创建一个客户化控件模板。

说明描述了如何使用ImageBrush替代PictureMarkerSymol以加强graphic的显示性能。

内容:

         从一个拥有Fill属性,可以被设置为任何类型brush的容器(例如,Rectangle)入手。使用ImageBrush来引用目标图片(image),以便用来符号化graphics。ImageBrush负责解码图片,因此它可以在所有将使用它的graphic要素中共享。那么,当客户化符号被分配给500个graphic点时,500个矩形实例将被创建(正如模板中定义的),但是只有一个Image Brush被生成。下面是用于符号的基础控件模板:

<ControlTemplate

xmlns="http://schemas.microsoft.com/client/2007"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Rectangle Fill="{Binding Symbol.Fill}"

Opacity="{Binding Symbol.Opacity}"

Width="{Binding Symbol.Width}"

Height="{Binding Symbol.Height}" />

</ControlTemplate>

从使用包含在ArcGIS API for Microsoft Silverlight/WPF 中的MarkerSymbol类,或者从scratch创建一个新的客户化符号入手。无论是哪种情况,客户化marker 符号类都应该有一个公共的Fill属性,它可以被用于绑定到刷子。这里仅是一个示例,显示如何为MarkerSymbol类定义一个客户化控件模板:

<Grid.Resources>

<ImageBrush ImageSource="/images/i_pushpin.png" x:Name="MyImageBrush" />

<esriSymbols:MarkerSymbol x:Name="MyPictureMarker" OffsetX="10" OffsetY="10">

<esriSymbols:MarkerSymbol.ControlTemplate>

<ControlTemplate>

<Rectangle Fill="{StaticResource MyImageBrush}"

Opacity="0.75" Width="20" Height="20" />

</ControlTemplate>

</esriSymbols:MarkerSymbol.ControlTemplate>

</esriSymbols:MarkerSymbol>

</Grid.Resources>
 

创建时间:2009-07-28

最近更新: 2010-06-22

[转]Howto: 使用ImageBrush替换PictureMarkerSymbol以加强graphic显示性能的更多相关文章

  1. Howto: 使用ImageBrush替换PictureMarkerSymbol以加强graphic显示性能

      软件: ArcGIS API for Microsoft Silverlight/WPF 9.3.1 操作系统: N/A 摘要:          ArcGIS API for Microsoft ...

  2. sublime 将tab替换为4个空格 & 显示空格

    preferences -> settings -> 在右侧的json中加入(左侧的默认配置是无法修改的,可以在默认配置中搜到这几个配置) // The number of spaces ...

  3. [word]用Word2007查找和替换功能批量设置图片位置

    Word2007的"查找和替换"功能并不仅仅可以对文字进行批量的查找替换,还有很多神奇的功能,比如对插入的图片位置进行批量的查找和调整等等. 今天我们就来试试Word2007的&q ...

  4. JavaScript字符串插入、删除、替换函数

    JavaScript字符串插入.删除.替换函数 说明: 以下函数中前两个函数取出查找字符串的前一部分和后一部分,以用于其他函数.注意,调用一次 replaceString(mainStr,search ...

  5. sed 文件查找,替换

    sed 命令查找与替换: (1)删除第2,3行:sed '2,3d' test.txt > new.txt (2)替换:  替换所有:sed 's/abc/ABC/' test.txt > ...

  6. phpcms如何做企业站--> 替换首页最初操作

    首先用一个静态首页的模板,通过cms进行替换做成一个有后台的 首页的替换流程首先要先把静态网页做出来,拿这个页面去替换 页面所有的文件都在这,做静态页面的文件 现在要做的是把这些文件复制一下拿到php ...

  7. CSS样式设置语法全解,样式优先级、值和单位、字体、文本、块级元素,行内元素,替换元素、非替换元素、display、float、position、table、li、光标、边距边框、轮廓、颜色背景

    全栈工程师开发手册 (作者:栾鹏) 一个demo学会css css选择器全解 css操作语法全解 CSS样式设置语法全解: 样式优先级 1. !important标记的样式 > 内联样式(sty ...

  8. java itext替换PDF中的文本

    itext没有提供直接替换PDF文本的接口,我们可以通过在原有的文本区域覆盖一个遮挡层,再在上面加上文本来实现. 所需jar包: 1.先在PDF需要替换的位置覆盖一个白色遮挡层(颜色可根据PDF文字背 ...

  9. CSS 替换元素和非替换元素 行内非替换元素

    html元素也可以分为替换元素和非替换元素 1.替换元素 替换元素是由浏览器根据表示的元素和属性决定显示的内容. 例如:<img src="./image.jpg" /> ...

随机推荐

  1. QT 出现信号槽不触发的问题

    主要有以下三点: 1)槽函数未声明为 slots 类型, 信号函数未声明为 signals所致 2)槽函数和信号函数的参数不一致所致 3)connect关联时失败

  2. Docker从0开始之部署一套2048小游戏

    本文记录一下在docker部署一套2048小游戏的过程,在娱乐中熟悉docker的应用部署.docker 安装不在本文讲述之中,参考我的其它博客. 1.获取image镜像. 方法一:daocloud. ...

  3. ACL认证 vs 密码认证

    呼入时需要进行认证:acl IP认证 和 密码认证.  acl 认证优先进行. ACL认证成功: Access Granted.  直接进入 sip_profile>context 进行路由 A ...

  4. datatables:如何禁用一列的排序

    第一列是checkbox列,不需要排序,所以需要禁用掉. 代码如下: var table = $('#example1').DataTable( { 'paging' : true, 'lengthC ...

  5. Day8--------------yum软件包管理

    1.url三段式:协议.域名.路径 例如:http://wan.360.cn/game 2.本地yum配置: vim /etc/yum.repos.d/local.repo [local] #固定格式 ...

  6. Tp5自动验证

    <?php class DB { private $address = 'mysql.21future.com'; private $username = 'manbang'; private ...

  7. Codeforces 1110D Jongmah [DP]

    洛谷 Codeforces 我-我我把这-这这题切了??? 说实话这题的确不难,只是我看到有大佬没做出来有点慌-- 突然发现这题是我在洛谷的第500个AC呢.那就更要写篇题解纪念一下了. 思路 容易想 ...

  8. Confluence 6 恢复一个站点

    这个页面对如何从一个 XML 导出文件中恢复到一个已经存在的 Confluence 站点进行描述. 如果你希望导入数据倒一个新的站点,请参考 restoring from backup during ...

  9. Confluence 6 workbox 通知包含了什么

    当一个用户在 Confluence 中进行下面的操作的时候,workbox 将会显示为通知: 分享(Shares)你的页面或者博客页面. 提及(Mentions)你的页面,博客页面,回复或者任务. 你 ...

  10. 声明寄存器ROM

    :] ROM [:] ; integer i; initial begin ;i<=;i=i+) begin ROM[i] <= {{'b0}}; end end 同时可以考虑双端口ROM ...