【发布时间】:2012-01-14 10:57:24
【问题描述】:
我有一个显示画布图像的自定义控件。我正在使用 AutoScroll 以及缩放比例来显示图像。
因此我必须处理的数据是:
- 缩放比例(2.0f = 200% 缩放)
- 画布边界 (RectangleF)。 800x600px 的图像将具有 1600x1200 的 CanvasBounds 和 2.0f 的缩放比率。位置点是画布的起点,如果它被缩小而不滚动。
- 客户端矩形
- 自动滚动位置
我需要在任何给定时间计算视口,以相对于原始位图的坐标给出。因此,如果整个图像都是可见的,并且图像是 800x600,那么视口将是 0,0 处的 Rectangle,大小为 800,600。
我放大了图像,视口应该始终是代表整个可见区域的矩形。如果我缩小并且图像在屏幕上居中,那么视口应该是整个图像。
编辑:这是一个图形表示。位图当前已缩放,但我有原始大小和缩放比例。我有 AutoScrollPosition。 AutoScrollMinSize 的设置取决于缩放级别。如果图像高度为 500 像素并且我们以 200% (2.0f) 缩放,则 AutoScrollMinSize.Height 为 1000。
红色框代表视口矩形。
【问题讨论】:
-
我在 C# 中没有答案,但如果有帮助,请查看 compsci.gxstudios.net/project.pdf 的附录 A。
-
这不是 3D,这是 GDI+
-
附录不是在讨论 3D,而是针对 3D 地图编辑器中的 2D 设计画布。
-
哦,好的,我在文档中搜索了“Viewport”,没有找到这个词。我再看看。