我一直在阅读MultiScaleImage源码,并且发现任何有用的东西已经证明是非常困难的,因此我转向这里的专家。我想要的具体知识与GetTileLayers方法有关。我知道这个方法用于获取图像切片。但我不知道调用此方法的位置,参数来自何处以及如果我将MultiScaleTileSource类子类化,我将如何使用它。对这种方法或MSI模型的任何见解都会令人惊讶,但我有三个主要问题:
1。 GetTileLayers调用方法应该在哪里? 2.如果我想从非本地URI中绘制png,我应该如何更改此方法? 3.我在哪里可以找到一些阅读材料来帮助解决这个问题?
答案 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();