代码之家  ›  专栏  ›  技术社区  ›  Stefan

缩放对象大小视区->预览

  •  2
  • Stefan  · 技术社区  · 15 年前

    我在玩一个可以在屏幕上定位运行时对象的项目。我还有一个小的“预览”窗口,我想在那里看到物体的轮廓。

    我有一个对象数组,它在“场景”上有大小和位置。现在,我想循环浏览场景对象,并在预览窗口中为“场景”中的每个对象创建一个PictureBox。

    所以,我有“场景”的大小和在场景中可见的对象数组。每个对象都有一个映射到场景的大小和位置。

    我还有一个动态大小的预览窗口。如何创建缩小到预览窗口的预览?为了方便起见,我循环浏览场景中的场景对象,并为每个对象在预览窗体上创建一个PictureBox,它使用预览窗体大小来进行缩放。

    SceneSize=new size(800,600) 
    PreviewSize=new size(80,60) 
    
    For each obj as SceneObject in Scene
       dim p as new picturebox
        p.size=?? scaling here (we have obj.size and obj.location)
        p.location=?? scaling here (we have obj.size and obj.location)
        previewWindow.controls.add (p)
    
    next
    

    .NET中的任何示例都是不错的。

    谢谢。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Aaron M    15 年前

    BobPowell在GDI+上的站点可能提供了一些关于如何继续的有用信息。查看他关于矩阵变换的页面。本文可能会为您提供一些关于如何继续的好主意。

    Bob Powell GDI+ Transformations

        2
  •  0
  •   Stefan    15 年前

    这就成功了,并不比这更难。

    Function GetPreviewRectangleForObject(ByVal ScreenSize As Size, ByVal PreviewSize As Size, ByVal OriginalRect As Rectangle) As Rectangle
        Dim xFactor As Integer = ScreenSize.Width / PreviewSize.Width
        Dim yFactor As Integer = ScreenSize.Height / PreviewSize.Height
        With OriginalRect
            Return New Rectangle(.X / xFactor, .Y / yFactor, .Width / xFactor, .Height / yFactor)
        End With
    End Function