[轉]Howto: 使用ImageBrush替換PictureMarkerSymbol以加強graphic顯示效能

來源:互聯網
上載者:User

標籤:

原文地址: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顯示效能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.