Koordinatensystem für PictureBox in .NET C++

Andrej85

Mitglied
Hallo,

ich bin grad dabei eine grafische Oberfläche zu erstellen. Meine Frage ist die:

Ich habe unter Windows Forms eine PictureBox der Größe [512;672]. In diese PictureBox sollen einzelne Pixel (schwarz und weiß) mit bestimmten Koordinaten eigefügt werden.

Wie mache ich das am besten? :)
Ideal wäre natürlich ein Koordinatensystem wo ich die Pixel nur noch an ihre Koordinaten navigieren muss. Die Frage ist nur gibt es sowas?

MfG
Andrej
 
Bei der PictureBox gibt es 'ne ScaleFunction. Schau dir die Funktion mal an.

Wenn du da mit negativen Werten arbeitest dann ist der Punkt (0|0) z.B. Links unten. Damit müsstest du zurecht kommen.
 
Danke @waswiewo für die schnelle Antwort!

Die Scale Methode(n) sind doch zum skalieren der einzelnen Steuerelemente oder nicht?

Wie weise ich denn in diesem 512*672 großen Array einzelne Pixel zu?

MfG
Andrej
 
Hi,

hier sind nen paar Beispiele, was man machen kann.

Zum Testen brauchst du:

PictureBox mit einem Image (am besten weiß)

2 Label (Label1 und Label2)

Code:
 Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove

        Dim Bild As Bitmap = CType(Me.PictureBox1.Image.Clone, Bitmap)

        ' Koordinate festlegen z.B.:
        Dim X As Integer = 100 ' X-Koordinate
        Dim Y As Integer = 234 ' Y-Koordinate

        ' Farbe der Pixel bestimmen 
        Dim RWert As Integer = Bild.GetPixel(X, Y).R
        Dim GWert As Integer = Bild.GetPixel(X, Y).G
        Dim BWert As Integer = Bild.GetPixel(X, Y).B
        Dim AWert As Integer = Bild.GetPixel(X, Y).A


        Label1.Text = (String.Format("{0},{1}", e.X, e.Y))

        If e.X > 100 And e.X < 150 Then

            Label2.Text = "Ja ist drin"

        ElseIf e.Y > 200 And e.Y < 250 Then

            Label2.Text = "Rotanteil= " & RWert & " Grünanteil= " & GWert & " Blauanteil= " & BWert & " Alphawert= " & AWert

        Else

            Bild.SetPixel(X, Y, Color.Black) ' Bildpunkt mit den obigen Werten

            Bild.SetPixel(156, 241, Color.Black) ' Mit eigenen Werten
            Bild.SetPixel(523, 324, Color.Pink) ' Mit eigenen Werten
            Bild.SetPixel(428, 201, Color.Red) ' Mit eigenen Werten

            ' und ausgeben
            Me.PictureBox1.Image = Bild

        End If

    End Sub
 
Code:
 Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove

      
        ' Farbe der Pixel bestimmen 
        Dim RWert As Integer = Bild.GetPixel(X, Y).R
        Dim GWert As Integer = Bild.GetPixel(X, Y).G
        Dim BWert As Integer = Bild.GetPixel(X, Y).B
        Dim AWert As Integer = Bild.GetPixel(X, Y).A


       
            Bild.SetPixel(X, Y, Color.Black) ' Bildpunkt mit den obigen Werten

            Bild.SetPixel(156, 241, Color.Black) ' Mit eigenen Werten
            Bild.SetPixel(523, 324, Color.Pink) ' Mit eigenen Werten
            Bild.SetPixel(428, 201, Color.Red) ' Mit eigenen Werten

hi,
hab da mal ein wenig code von dir zitiert den ich nicht verstehe. Solche Methoden wie SetPixel() und GetPixel gibt es bei mir leider nicht ( ich arbeite mit Visual C++ 2008 Express).

Und das MouseMove Ereignis ist bei mir auch anders.

MfG
Andrej
 

Neue Beiträge

Zurück