MultiScaleImageSource GetTileLayers说明

时间:2014-06-09 14:23:17

标签: wcf silverlight multiscaleimage

我一直在阅读MultiScaleImage源码,并且发现任何有用的东西已经证明是非常困难的,因此我转向这里的专家。我想要的具体知识与GetTileLayers方法有关。我知道这个方法用于获取图像切片。但我不知道调用此方法的位置,参数来自何处以及如果我将MultiScaleTileSource类子类化,我将如何使用它。对这种方法或MSI模型的任何见解都会令人惊讶,但我有三个主要问题:

1。 GetTileLayers调用方法应该在哪里? 2.如果我想从非本地URI中绘制png,我应该如何更改此方法? 3.我在哪里可以找到一些阅读材料来帮助解决这个问题?

1 个答案:

答案 0 :(得分:0)

为了创建自定义磁贴源,您可以继承MultiScaleTileSource并覆盖GetTileLayers方法,如下面的示例所示,该示例定义了一个由1000 * 1000个大小为256x256的磁贴组成的图像每个像素。

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();