Avatar billede fun22 Nybegynder
14. februar 2013 - 14:18

Scalere liste med Points

Jeg har en liste med Points (til at tegne en polygon) som fint tegner det den skal.

Men hvis nu programmet bliver åbnet på en anden pc med en anden opløsning så passer placeringen jo ikke mere..

Jeg har så prøve med følgende funktion:

Function GetScaledPoint(ByVal s As List(Of Point)) As List(Of Point)
        Dim xfactor As Double = 0
        Dim yfactor As Double = 0
        Dim nlist As New List(Of Point)

        Dim OriginalSize As Size = New Size(startwidth, startheight)
        Dim NewSize As Size = New Size(FlorPlan.Width, FlorPlan.Height)

        For i As Integer = 0 To s.Count - 1

            Dim nWidth As Integer = 0
            Dim nHeight As Integer

            If NewSize.Width < OriginalSize.Width Then
                xfactor = OriginalSize.Width / NewSize.Width
                nWidth = Math.Round(s(i).X / Math.Round(xfactor, 2), 0)
            Else
                xfactor = NewSize.Width / OriginalSize.Width
                nWidth = Math.Round(s(i).X * Math.Round(xfactor, 2), 0)
            End If

            If NewSize.Height < OriginalSize.Height Then
                yfactor = OriginalSize.Height / NewSize.Height
                nHeight = Math.Round(s(i).Y / Math.Round(yfactor, 2), 0)
            Else
                yfactor = NewSize.Height / OriginalSize.Height
                nHeight = Math.Round(s(i).Y * Math.Round(yfactor, 2), 0)
            End If

            'MsgBox(nWidth & " x " & nHeight)

            nlist.Add(New Point(nWidth, nHeight))
        Next
        Return nlist
    End Function

Men udover at den ikke er helt præsis (+/- 8 px) så skal den jo også vide hvilken opløsning polygonen oprindeligt er tegnet med?

Findes der noget andet smart? Eller skal jeg bare gemme opløsning sammen med polygonen i databasen?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester