tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
513
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Andrej85 Andrej85 ist offline Mitglied Bronze
    Registriert seit
    Jun 2011
    Beiträge
    32
    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
     

  2. #2
    Avatar von waswiewo
    waswiewo waswiewo ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Ort
    Detmold, Germany, Germany
    Beiträge
    114
    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.
     
    • MfG waswiewo

  3. #3
    Andrej85 Andrej85 ist offline Mitglied Bronze
    Registriert seit
    Jun 2011
    Beiträge
    32
    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
     

  4. #4
    Avatar von waswiewo
    waswiewo waswiewo ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Ort
    Detmold, Germany, Germany
    Beiträge
    114
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
     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
     
    • MfG waswiewo

  5. #5
    Andrej85 Andrej85 ist offline Mitglied Bronze
    Registriert seit
    Jun 2011
    Beiträge
    32
    Zitat Zitat von waswiewo Beitrag anzeigen



    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
     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
     

  6. #6
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Verwendest du reines (Visual) C++ oder C++ zusammen mit .Net (C++/CLI)?
     
    hihi = -h²

  7. #7
    Andrej85 Andrej85 ist offline Mitglied Bronze
    Registriert seit
    Jun 2011
    Beiträge
    32
    Ich verwende C++ mit .NET
     

Ähnliche Themen

  1. Koordinatensystem
    Von lucka im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 7
    Letzter Beitrag: 24.06.09, 15:46
  2. 3D-Koordinatensystem
    Von Nord-Süd-Richtung im Forum Coders Talk
    Antworten: 10
    Letzter Beitrag: 30.08.08, 12:09
  3. Koordinatensystem
    Von girl2005 im Forum Java
    Antworten: 40
    Letzter Beitrag: 14.08.08, 23:24
  4. pictureBox auf PictureBox oder Label
    Von shn im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 31.08.05, 16:37
  5. PictureBox über PictureBox
    Von JK_net im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 14.03.05, 09:03

Stichworte