Hallo Ihr lieben,
wieder habe ich hier ein Problem, erstmal zeige ich euch das Bild/Animation, was mehr als 1000 Wörter sagt:
Kann einer mir sagen, woran das liegen könnte?
Der Code von zoomen sieht so aus:
Spoiler anzeigen
Und der GDI-Objekt sieht so aus:
Spoiler anzeigen
Auf Antwort würde ich mich supi freuen!
MfG.
China
wieder habe ich hier ein Problem, erstmal zeige ich euch das Bild/Animation, was mehr als 1000 Wörter sagt:
Kann einer mir sagen, woran das liegen könnte?
Der Code von zoomen sieht so aus:
Quellcode
- Private Sub Form1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
- Dim w As Single = Panel1.Width / 10
- Dim h As Single = Panel1.Height / 10
- Dim zoom_faktor_x As Single = Panel1.Width / Room_Level_Width
- Dim zoom_faktor_y As Single = Panel1.Height / Room_Level_Height
- If e.Delta > 0 Then
- zoom_width += w
- zoom_height += h
- Panel1.Width = Room_Level_Width + zoom_width
- Panel1.Height = Room_Level_Height + zoom_height
- Panel1.Location = New Point(Panel1.Location.X - w / 2, Panel1.Location.Y - h / 2)
- Me.Invalidate()
- Else
- If Panel1.Width > 16 Or Panel1.Height > 16 Then
- zoom_width -= w
- zoom_height -= h
- Panel1.Width = Room_Level_Width + zoom_width
- Panel1.Height = Room_Level_Height + zoom_height
- Panel1.Location = New Point(Panel1.Location.X + w / 2, Panel1.Location.Y + h / 2)
- Me.Invalidate()
- End If
- End If
- End Sub
Und der GDI-Objekt sieht so aus:
Quellcode
- Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
- With e.Graphics
- .InterpolationMode = InterpolationMode.NearestNeighbor 'Damit der GDI-Objekt nicht so verschwommen aussieht
- .PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality 'Joa... eigentlich soll DIESER befehl das Problem lösen... aber ich glaube, damit hat es nicht zu tun
- Dim zoom_faktor_x As Single = Panel1.Height / Room_Level_Height 'Erhalte den Zoom aspect ratio in bereich Width, das wird beim zoomen benötigt
- Dim zoom_faktor_y As Single = Panel1.Height / Room_Level_Height 'Erhalte den Zoom aspect ratio in bereich Height, das wird beim zoomen benötigt
- If Not Room_Level_Tiles_amount <= 0 Then 'Menge von GDI-Objekt
- Dim i_tiles As Integer = 0
- While i_tiles <= Room_Level_Tiles_amount 'Zeichne alle GDI-Objekt, was in Arrays gespeichert sind
- If Room_Level_Tiles_amount > i_tiles Then
- Dim x As Integer = 0
- Dim y As Integer = 0
- x = Room_Level_Tiles_x(i_tiles) 'Room Level Tiles X sind sowieso in Integer gespeichert, da gibt es also keine Kommastellung
- y = Room_Level_Tiles_y(i_tiles) 'siehe oben
- Dim img_rec = New Rectangle(Panel1.Location.X + x * zoom_faktor_x, Panel1.Location.Y + y * zoom_faktor_y, Room_Level_Tiles_surface(i_tiles).Width * zoom_faktor_x, Room_Level_Tiles_surface(i_tiles).Height * zoom_faktor_y)
- ' Panel1.Location -> Position von Panel
- ' Room_Level_Tiles_surface(i_tiles).Width -> das ist eine Bild, welches die Länge "Width" herausgibt. Auch hier ist in Integer gespeichert.
- .DrawImage(Room_Level_Tiles_surface(i_tiles), img_rec) 'Zeichne den GDI-Objekt
- End If
- i_tiles += 1
- End While
- End If
- End With
- End Sub
Auf Antwort würde ich mich supi freuen!
MfG.
China