Eine Farbe in der Picturebox erkennen
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 57 Antworten in diesem Thema. Der letzte Beitrag () ist von MediaXtremely.
-
-
-
-
-
-
-
MediaXtremely schrieb:
Ja eine weiße stelle
Wie du die Pixel einzeln ausliest und auf Farbe abprüfst kannst du in diesem Beispiel nachlesen:
techjamaica.com/forums/showthr…472fc&p=580723#post580723--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
-- -
-
Sollte es etwa so sein:
MouseDown -> x, y, PictureBox.Image - Pixel an Stelle x, y abfragen?
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MediaXtremely“ ()
-
Habe doch noch ein Problem!
Wenn er einen Weißwert erkennt gibt er jedes mal Alarm. Also für jeden weißen Pixel.
Ich möchte aber das er das nur einmal macht.
VB.NET-Quellcode
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- Dim clr As Integer
- Dim xmax As Integer
- Dim ymax As Integer
- Dim x As Integer
- Dim y As Integer
- ' Get the bitmap and its dimensions.
- Dim bm As Bitmap = PictureBox2.Image
- xmax = bm.Width - 1
- ymax = bm.Height - 1
- ' read the pixels
- For y = 0 To ymax
- For x = 0 To xmax
- With bm.GetPixel(x, y)
- clr = .R & .G & .B
- If clr = "255255255" Or clr = "240240255" Or clr = "238238255" Or clr = "236236255" Or clr = "234234255" Or clr = "232232255" Or clr = "230230255" Or clr = "228228255" Or clr = "226226255" Or clr = "224224255" Or clr = "222222255" Or clr = "220220255" Or clr = "218218255" Or clr = "216216255" Or clr = "214214255" Or clr = "212212255" Or clr = "210210255" Or clr = "208208255" Or clr = "206206255" Or clr = "204204255" Or clr = "202202255" Or clr = "200200255" Or clr = "198198255" Or clr = "196196255" Or clr = "194194255" Or clr = "192192255" Or clr = "190190255" Or clr = "188188255" Or clr = "186186255" Or clr = "184184255" Or clr = "182182255" Or clr = "180180255" Or clr = "178178255" Or clr = "176176255" Or clr = "174174255" Or clr = "172172255" Or clr = "170170255" Or clr = "168168255" Or clr = "166166255" Or clr = "164164255" Or clr = "162162255" Or clr = "160160255" Or clr = "158158255" Then
- My.Computer.Audio.Play(Application.StartupPath & "/60.wav", AudioPlayMode.Background)
- End If
- End With
- Next x
- Next y
- End Sub
-
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Ich verstehe das nicht ganz.
Ich habe es versucht und jetzt ein Beispiel:
VB.NET-Quellcode
- For y = 0 To ymax
- For x = 0 To xmax
- With bm.GetPixel(x, y)
- clr = .R & .G & .B
- Dim flag As Boolean = True
- If clr = "255255255" Or clr = "240240255" Or clr = "238238255" Or clr = "236236255" Or clr = "234234255" Or clr = "232232255" Or clr = "230230255" Or clr = "228228255" Or clr = "226226255" Or clr = "224224255" Or clr = "222222255" Or clr = "220220255" Or clr = "218218255" Or clr = "216216255" Or clr = "214214255" Or clr = "212212255" Or clr = "210210255" Or clr = "208208255" Or clr = "206206255" Or clr = "204204255" Or clr = "202202255" Or clr = "200200255" Or clr = "198198255" Or clr = "196196255" Or clr = "194194255" Or clr = "192192255" Or clr = "190190255" Or clr = "188188255" Or clr = "186186255" Or clr = "184184255" Or clr = "182182255" Or clr = "180180255" Or clr = "178178255" Or clr = "176176255" Or clr = "174174255" Or clr = "172172255" Or clr = "170170255" Or clr = "168168255" Or clr = "166166255" Or clr = "164164255" Or clr = "162162255" Or clr = "160160255" Or clr = "158158255" Then
- End If
- If flag Then
- My.Computer.Audio.Play(Application.StartupPath & "/60.wav", AudioPlayMode.Background)
- End If
- flag = False
- End With
- Next x
- Next y
-
MediaXtremely schrieb:
With bm.GetPixel(x, y)
clr = .R & .G & .B
If clr = "255255255"
Wir haben tolle Zahlen und was machen wir zum vergleichen? Wandeln sie nach String um ... Ineffizienter gehts wohl kaum! Na ja, die drölfzich "or"s sind sicherlich auch kaum schlechter. -
MediaXtremely schrieb:
Ich verstehe das nicht ganz.
VB.NET-Quellcode
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- Dim clr As Integer
- Dim xmax As Integer
- Dim ymax As Integer
- Dim x As Integer
- Dim y As Integer
- Dim flag As Boolean = True
- ' Get the bitmap and its dimensions.
- Dim bm As Bitmap = PictureBox2.Image
- xmax = bm.Width - 1
- ymax = bm.Height - 1
- ' read the pixels
- For y = 0 To ymax
- For x = 0 To xmax
- With bm
- clr = .GetPixel(x, y).ToArgb
- If clr = &HFFFFFF Then ' hier noch erweitern
- If flag Then
- My.Computer.Audio.Play(Application.StartupPath & "/60.wav", AudioPlayMode.Background)
- End If
- flag = False
- End If
- End With
- Next x
- Next y
- End Sub
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
MediaXtremely schrieb:
Wenn er einen Weißwert erkennt gibt er jedes mal Alarm. Also für jeden weißen Pixel.
Ich möchte aber das er das nur einmal macht.
Die Return-Anweisung ist dir bekannt? -
So es funktioniert aber einen kleinen Haken gibt es noch...
Wenn ich die Schleife durchlaufen lasse, geht er durch alle if schleifen auch du das else..
Ich habe jetzt schon viel rumprobiert aber nichts hilft. Was mache ich falsch?
VB.NET-Quellcode
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- Dim clr As Integer
- Dim xmax As Integer
- Dim ymax As Integer
- Dim x As Integer
- Dim y As Integer
- Dim flag As Boolean = True
- Dim flag3 As Boolean = True
- Dim flag5 As Boolean = True
- ' Get the bitmap and its dimensions.
- Dim bm As Bitmap = PictureBox2.Image
- xmax = bm.Width - 1
- ymax = bm.Height - 1
- ' read the pixels
- For y = 0 To ymax
- For x = 0 To xmax
- With bm.GetPixel(x, y)
- clr = .R & .G & .B
- If clr = "1920192" = True Or clr = "12911128" = True Or clr = "107049" = True Or clr = "1280128" = True Or clr = "16900" = True Or clr = "100044" = True Or clr = "871895" = True Or clr = "1623774" = True Or clr = "25500" = True Or clr = "25100" = True Or clr = "24700" = True Or clr = "24300" = True Or clr = "23900" = True Or clr = "23500" = True Or clr = "23100" = True Or clr = "22700" = True Or clr = "22300" = True Or clr = "21900" = True Or clr = "21500" = True Or clr = "21100" = True Or clr = "20700" = True Or clr = "20300" = True Or clr = "19900" = True Or clr = "19500" = True Or clr = "19100" = True Or clr = "18700" = True Or clr = "18300" = True Or clr = "17900" = True Or clr = "17500" = True Or clr = "17100" = True Or clr = "16700" = True Or clr = "16300" = True Or clr = "15900" = True Or clr = "15500" = True Or clr = "15100" = True Or clr = "14700" = True Or clr = "14300" = True Or clr = "13900" = True Or clr = "13500" = True Or clr = "13100" = True Then
- If flag Then
- My.Computer.Audio.Play(Application.StartupPath & "/Signal/05.wav", AudioPlayMode.Background)
- End If
- flag = False
- Else
- If clr = "00200" = True Or clr = "22137" = True Or clr = "2626177" = True Or clr = "0088" = True Or clr = "7070214" = True Or clr = "88128" = True Or clr = "00190" = True Or clr = "22136" = True Or clr = "00180" = True Or clr = "00170" = True Or clr = "00160" = True Or clr = "00150" = True Or clr = "00140" = True Or clr = "00130" = True Or clr = "00120" = True Or clr = "00110" = True Then
- If flag3 Then
- My.Computer.Audio.Play(Application.StartupPath & "/Signal/03.wav", AudioPlayMode.Background)
- End If
- flag3 = False
- Else
- If clr = "255255255" = True Or clr = "240240255" = True Or clr = "238238255" = True Or clr = "236236255" = True Or clr = "234234255" = True Or clr = "232232255" = True Or clr = "230230255" = True Or clr = "228228255" = True Or clr = "226226255" = True Or clr = "224224255" = True Or clr = "222222255" = True Or clr = "220220255" = True Or clr = "218218255" = True Or clr = "216216255" = True Or clr = "214214255" = True Or clr = "212212255" = True Or clr = "210210255" = True Or clr = "208208255" = True Or clr = "206206255" = True Or clr = "204204255" = True Or clr = "202202255" = True Or clr = "200200255" = True Or clr = "198198255" = True Or clr = "196196255" = True Or clr = "194194255" = True Or clr = "192192255" = True Or clr = "190190255" = True Or clr = "188188255" Or clr = "186186255" = True Or clr = "184184255" = True Or clr = "182182255" = True Or clr = "180180255" = True Or clr = "178178255" = True Or clr = "176176255" = True Or clr = "174174255" = True Or clr = "172172255" = True Or clr = "170170255" = True Or clr = "168168255" = True Or clr = "166166255" = True Or clr = "164164255" = True Or clr = "162162255" = True Or clr = "160160255" = True Or clr = "158158255" = True Then
- If flag5 Then
- My.Computer.Audio.Play(Application.StartupPath & "/Signal/01.wav", AudioPlayMode.Background)
- End If
- flag5 = False
- clr = False
- End If
- End If
- End If
- End With
- Next x
- Next y
-
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Bei Local steht das Clr 0 Integer..
Egal was ich mache es geht die ganze schleife durch.
Edit:
Bei Option Strict On
Zeigt er mir fehler an er will das
in
umwandeln.
Das habe gemacht und die String in Integer umgewandelt.
Trotzdem das gleiche Problem..Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MediaXtremely“ ()
-
Ähnliche Themen
-
MaxK10 - - Sonstige Problemstellungen
-
juli90 - - Sonstige Problemstellungen
-
6 Benutzer haben hier geschrieben
- Gast (33)
- RodFromGermany (14)
- ErfinderDesRades (6)
- petaod (2)
- Dancger (2)
- Mono (1)