2009-05-28 8 views
2

Ich spielte mit einem Projekt, wo ich Objekte Laufzeit auf dem Bildschirm positionieren kann. Ich habe auch ein kleines "Vorschau" -Fenster, wo ich die Umrisse der Objekte sehen möchte.Maßstab Objektgröße Ansichtsfenster-> Vorschau

Ich habe ein Objekt-Array, die Größe und Standort auf der "Szene" haben. Jetzt möchte ich meine Szenenobjekte durchlaufen und im Vorschaufenster für jedes Objekt in der "Szene" eine Bildbox erstellen.

Also, ich habe die Größe der "Szene" und ein Array der Objekte, die in der Szene sichtbar sind. Jedes Objekt hat eine Größe und einen Standort, die der Szene zugeordnet sind.

Ich habe auch ein Vorschaufenster, die eine dynamische Größe haben. Wie erstelle ich eine Vorschau, die auf das Vorschaufenster skaliert? Um es einfacher zu machen, durchlaufe ich die Szenenobjekte in der Szene und erstelle eine Bildbox auf dem Vorschau-Formular für jedes Objekt, das die Größe der Vorschau-Formulare verwendet, um die Skalierung durchzuführen.

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 

Jedes Beispiel in .Net wäre schön.

Danke.

Antwort

0

Dieser der Trick zu gehen, war es nicht schwieriger als das.

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 
2

Bob Powells Website auf GDI + enthält möglicherweise nützliche Informationen zum weiteren Vorgehen. Schau dir seine Seite zu Matrix Transformationen an. Dieser Artikel könnte Sie mit einigen guten Ideen geben, wie

Bob Powell GDI+ Transformations

+0

Danke. Es gab gute Informationen dort, +1. – Stefan