首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Silverlight MultiScaleImage/SubImage视点排列逻辑问题

Silverlight MultiScaleImage/SubImage视点排列逻辑问题
EN

Stack Overflow用户
提问于 2009-12-15 00:27:33
回答 1查看 1.1K关注 0票数 1

我已经为此绞尽脑汁好一阵子了,但都没有结果。

我有一堆地质样本的图像,它们名义上是1500px宽,30000px长。一组典型的这些图像的编号从20到100。我已经使用DeepZoomTools.dll创建了这些图像的集合,并尝试使用它来布置图像。

所有图像最初加载时的ViewPort.Origin为0,ViewPort.Width为1(基本上是默认设置)。我在MultiScaleImage.ImageOpenSucceeded事件之后对它们进行迭代,并尝试根据一些额外的元数据对它们进行排列。

每个图像都有一个关联的深度(以米为单位的深度),我想根据该深度堆叠每个图像。(有时图像之间可能存在间隙,因此我必须根据顶部的深度值来定位每个图像)。(请参阅备注以了解其他解释)。

加载了一组图像后,我找到了图像本身的每米像素,如下所示:(必须将它们全部求和,因为它们不一定是连续的)

代码语言:javascript
复制
double sumImagePixelHeights = (from s in _imageData.Values select s.Height).Sum();
double sumImageDepthRanges = (from s in _imageData.Values select (s.BottomDepth - s.TopDepth)).Sum();
_actualPixelsPerMeter = sumImagePixelHeights / sumImageDepthRanges;

现在,使用每米“全尺寸”图像的像素(深度以米为单位),我确定我实际想要显示的深度范围(y轴按深度缩放):

代码语言:javascript
复制
double desiredVisiblePixels = (_MaxVisibleY - _MinVisibleY)*_actualPixelsPerMeter;
mainImage.ViewportWidth = desiredVisiblePixels / mainImage.ActualHeight;

这应该设置视口宽度,以便我显示深度范围所需的“原始图像像素”的数量,由于纵横比锁定而缩放显示的X范围。

然后,我遍历mainImage.SubImages集合中的图像,以根据所需的深度设置它们的原点。

代码语言:javascript
复制
for (int index = 0; index < mainImage.SubImages.Count; index++)
    {
      MultiScaleSubImage si = mainImage.SubImages[index];
      ImageMetadata im = _imageData[index];
      double xpnt = _actualPixelsPerMeter *im.TopDepth / (im.Width);
      si.ViewportOrigin = new Point(0, -xpnt);  
    }

问题是:

ViewportWidth计算是错误的-我的图像被缩放到它们应该是的~3倍(即,10m的“显示深度范围”显示3m的实际深度范围)

很明显,我的计算中有一些逻辑错误,但在检查之后,我就是看不到它。

我在整个多尺度图像上设置ViewportWidth,而不是仅在子图像上设置它,但只要我不想调整彼此之间的视口宽度,这似乎是可以的。

我检查了正在解析并传入的深度值,它们是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-15 00:45:18

DeepZoom的东西,尤其是视口,在我使用它的时候总是让我头疼。我不确定我能不能回答你的问题,只能告诉你是什么帮助我得到了它。

  • My Blog Post on Using the Deep Zoom API
  • Jaime Rodriguez Post on Deep Zoom Collections

我最近发现的另一个资源是Eventr,我认为它比深度缩放工具本身更容易使用。该工具使得创建和显示深度缩放集合变得更加容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1901916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档