Was macht dieser Quellcode die 2te?

danke euch beiden für die schnelle antwort, hat mir sehr geholfen.

ich hätte noch eine frage zu einem anderen codestück:

Private Function BitmapDiff(ByVal b1 As Bitmap, ByVal b2 As Bitmap) As Bitmap
Dim bm As New Bitmap(b1.Width, b1.Height)
Dim A, B As Integer
A = 0 ; B = 0
For y As Integer = 0 To b1.Height - 1
ProgressBar2.Value = y / 480 * 100
For x As Integer = 0 To b1.Width - 1
If b1.GetPixel(x, y) b2.GetPixel(x, y) Then
bm.SetPixel(x, y, Color.Black)
A = A + 1
Else
bm.SetPixel(x, y, Color.White)
B = B + 1
End If
Next
Next
Pro1 = Math.Round(A / 307200 * 100.0, 4)
Pro2 = Math.Round(B / 307200 * 100.0, 4)
TextBox3.Text = Pro2 & " %"
TextBox2.Text = Pro1 & " %"
Return bm
PictureBox3.Image = Nothing
End Function

was macht dieser code, er müsste theoretisch 2 bilder pixelweise vergleichen.

Hallo!
Tut er im Prinzip auch. Wenn einige Randbedinungen gegeben sind, entsteht in einer PictureBox ein Bild, bei dem jedes Pixel, dessen Farbwert in beiden Bildern gleich ist, weiss gezeichnet wird und der Rest schwarz. Zudem werden die gleichen bzw. ungleichen Pixel gezählt.

Allerdings ist der Code relativ, na sagen wir mal, inkonsistent. Die Größe der Bilder wird nirgends überprüft, es kracht, wenn b2 eine kleinere Auflösung als b1 hat, zur Ergebnisberechnung wird hartcodiert eine Auflösung von 640x480 verwendet, die letzte Anweisung wird nie ausgeführt, jedes einzelne Pixel mit GetPixel() zu holen dauert ewig, usw. usf.
Ich hoffe mal, das Beispiel soll nicht als Muster für guten Code dienen…

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo!
Tut er im Prinzip auch. Wenn einige Randbedinungen gegeben
sind, entsteht in einer PictureBox ein Bild, bei dem jedes
Pixel, dessen Farbwert in beiden Bildern gleich ist, weiss
gezeichnet wird und der Rest schwarz. Zudem werden die
gleichen bzw. ungleichen Pixel gezählt.

Allerdings ist der Code relativ, na sagen wir mal,
inkonsistent. Die Größe der Bilder wird nirgends überprüft, es
kracht, wenn b2 eine kleinere Auflösung als b1 hat, zur
Ergebnisberechnung wird hartcodiert eine Auflösung von 640x480
verwendet, die letzte Anweisung wird nie ausgeführt, jedes
einzelne Pixel mit GetPixel() zu holen dauert ewig, usw. usf.
Ich hoffe mal, das Beispiel soll nicht als Muster für guten
Code dienen…

Gruß,
Martin

wie könnte man den code verbessern, damit er die größe überprüft, auch die performance sache würde mich interessieren!

Hallo nochmal!

wie könnte man den code verbessern, damit er die größe
überprüft, auch die performance sache würde mich
interessieren!

Ersteres ist wirklich nicht schwer und bleibt dem geneigten Leser zur Übung überlassen (Du sollst ja was lernen und nicht nur fertige Lösungen bekommen)…

Allgemein recht interessante Infos zur Bildbearbeitung (inkl. Ersatz für GetPixel/SetPixel zur Performancesteigerung) finden sich auch bei CodeProject: http://www.codeproject.com/info/search.aspx?artkw=im…
Christian Graus hat hier eine Serie von tollen Artikeln zum Thema verfasst.
Ist zwar in englisch, aber wer damit in dieser Branche Probleme hat, hat es ohnehin schwer…

Gruß,
Martin