缩放对象大小视口 - >预习

时间:2009-05-28 20:39:22

标签: vb.net scaling

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

我有一个在“场景”上有大小和位置的对象数组。现在我想遍历我的场景对象,并在预览窗口中为“场景”中的每个对象创建一个图片框。

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

我还有一个具有动态大小的预览窗口。如何创建缩小到预览窗口的预览?为了方便起见,我循环遍历场景中的场景对象,并在预览表单上为每个对象创建一个图片框,使用预览表单大小进行缩放。

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 个答案:

答案 0 :(得分:2)

Bob Powell关于GDI +的网站可能会提供一些有关如何继续的有用信息。查看他的Matrix Transformations页面。本文可能会为您提供有关如何继续的一些好主意

Bob Powell GDI+ Transformations

答案 1 :(得分:0)

这就是诀窍,并不比那更难。

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