2014-06-09 129 views
0

我一直在做閱讀MultiScaleImage源,並找到什麼有用的東西已被證明是相當困難的,因此,我求助於專家在這裏。我想與GetTileLayers方法有關的具體知識。我知道這種方法是用來獲取圖像瓷磚。但是我不知道這個方法是從哪裏調用的,或者參數來自哪裏,或者如果我將MultiScaleTileSource類分類,我將如何使用它。任何洞察這種方法或MSI模型將是驚人的,但我有3個主要問題:MultiScaleImageSource GetTileLayers說明

1. GetTileLayers調用的方法應該在哪裏?
2.我應該如何改變這種方法,如果我想從一個非本地URI繪製PNG的?
3.我在哪裏可以找到一些閱讀,以幫助這個?

回答

0

爲了創建自定義瓦片源,你會繼承MultiScaleTileSource並重寫GetTileLayers方法,如下面的例子中,它定義由1000×1000瓦大小的每個256×256像素的圖像。

public class MyTileSource : MultiScaleTileSource 
{ 
    public MyTileSource() 
     : base(1000 * 256, 1000 * 256, 256, 256, 0) 
    { 
    } 

    protected override void GetTileLayers(
     int tileLevel, int tilePositionX, int tilePositionY, 
     IList<object> tileImageLayerSources) 
    { 
     // create an appropriate URI for tileLevel, tilePositionX and tilePositionY 
     // and add it to the tileImageLayerSources collection 

     var uri = new Uri(...); 
     tileImageLayerSources.Add(uri); 
    } 
} 

現在,您會在MyTileSource類的實例分配給您的MultiScaleImage控制:

MultiScaleImage msImage = ... 
msImage.Source = new MyTileSource(); 
+0

謝謝!在完成之後,我會從哪裏調用GetTileLayers方法?它神奇地從背景中調用,還是我應該自己處理? – TragicDuck

+0

MultiScaleImage控件在需要獲取特定圖塊的URI時調用它。這就是爲什麼你必須重寫(實現)它。 – Clemens

+0

非常感謝!我正在開發一個已經開發的應用程序,而且我不能在我的生活中找到正在進行的調用! – TragicDuck