Fehler bei GetPixel Verfasst am: 21.06.2009, 15:32
Hallo an alle , dies ist mein erster Thread hier.
Ich habe vor 4 Tagen mit Visual Basic 2008 angefangen.
Ich habe ein Übungbuch durchgearbeitet.
Jetzt wage ich mich an meine ersten kleines eigenes Programme.
Ich komme an einer Stelle nicht weiter.
Ich möchte den Pixelwert des Bildes der PictureBox an der stelle 100, 100 auslesen.
Meine PictureBox lautet pb.
Ich habe hier schon gesucht, komme aber mit den Lösungen nicht weiter.
Code:
Public Class frm
Declare Function GetPixel Lib "gdi32.dll" ( _
ByVal hdc As Long, _
ByVal nXPos As Long, _
ByVal nYPos As Long) As Long
Private Sub frm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
pb.ImageLocation = "C:/Dokumente und Einstellungen/All Users/Dokumente/Eigene Bilder/Beispielbilder/Wasserlilien.jpg"
End Sub
Private Sub cmdPixelwert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPixelwert.Click
Dim Wert As String = "0"
Wert = GetPixel(pb, 100, 100)
MessageBox.Show(Wert)
End Sub
End Class
Ich bekomme folgenden Fehler angezeigt.
Fehler 1 Der Wert vom Typ "System.Windows.Forms.PictureBox" kann nicht in "Long" konvertiert werden. D:\VB2008\pixeltest1\WindowsApplication1\WindowsApplication1\Form1.vb 12 25 WindowsApplication1
Gruß Würzie _________________
ShockerZz Tutorial Leser
Anmeldedatum: 04.04.2009 Beiträge: 34
Verfasst am: 21.06.2009, 16:47
Bei den Parametern von GetPixel steht ByVal hdc as Long, als Argument gibtst du aber ein Control, besser gesagt eine Picturebox an, keine Zahl. Schau mal nach ob du falsch kopiert hast, wenn nicht, ist mit hdc etwas anderes gemeint.
würzie Newbie
Anmeldedatum: 21.06.2009 Beiträge: 6
Verfasst am: 21.06.2009, 18:41
Vielen Dank für die Info.
Ich habe den Code geändert in: >>hdc As System.Windows.Forms.PictureBox<< Siehe unten.
Er läuft jetzt durch.
Nur das Ergebnis macht mich etwas stutzig.
Der Wert soll 8589934591 sein.
Kann das richtig sein ?
Gruß Würzie
Code:
Public Class frm
Declare Function GetPixel Lib "gdi32.dll" ( _
ByVal hdc As System.Windows.Forms.PictureBox, _
ByVal nXPos As Long, _
ByVal nYPos As Long) As Long
Private Sub frm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
pb.ImageLocation = "C:/Dokumente und Einstellungen/All Users/Dokumente/Eigene Bilder/Beispielbilder/Wasserlilien.jpg"
End Sub
Private Sub cmdPixelwert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPixelwert.Click
Dim Wert As String = "0"
Wert = GetPixel(pb, 1, 1)
MessageBox.Show(Wert)
End Sub
End Class
ShockerZz Tutorial Leser
Anmeldedatum: 04.04.2009 Beiträge: 34
Verfasst am: 21.06.2009, 18:52
Das ist vielleicht eine Farbe in ARGB (Alpha-Red-Green-Blue), welche Farbe sollte es denn sein? _________________
würzie Newbie
Anmeldedatum: 21.06.2009 Beiträge: 6
Verfasst am: 22.06.2009, 22:42
Ich habs gelöst.
Auf der folgenden Seite war die Lösung.
Ist ganz einfach und kurz.