0

我一直在阅读 MultiScaleImage 源代码,发现任何有用的东西已被证明是相当困难的,因此我求助于这里的专家。我想了解的具体知识与 GetTileLayers 方法有关。我知道这种方法用于获取图像图块。但是我不知道从哪里调用这个方法,或者参数来自哪里,或者如果我将 MultiScaleTileSource 类作为子类,我将如何使用它。对这种方法或 MSI 模型的任何见解都会令人惊叹,但我有 3 个主要问题:

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

4

1 回答 1

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();
于 2014-06-10T12:13:59.363 回答