AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi if routine für getpixel (brett vorm kopf)
Thema durchsuchen
Ansicht
Themen-Optionen

if routine für getpixel (brett vorm kopf)

Ein Thema von rhodan · begonnen am 10. Feb 2011 · letzter Beitrag vom 11. Feb 2011
Antwort Antwort
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#1

if routine für getpixel (brett vorm kopf)

  Alt 10. Feb 2011, 01:22
hallöchen community

die panels haben von anfang an ne weisse farbe.
mal angenommen das foto was ich auf farbanteile durchsuche hat an der vorgegebenen Pixelposition keinen blau oder grünanteil, und somit ändert sich die panelfarbe auch nicht.

wie schreibe ich nun ne IF routine das wenn die panelfarbe nach dem prüfen immernoch weiss ist, an pixelposition X+1,Y+1 gesucht wird, bzw anstatt der 506 meinetwegen ne 508?

Code:
begin
  DWord(AColor) := GetPixel(dc,506,554);
 
 //Blauanteil eines Fotos
  if (AColor[1] > 220) and (AColor[2] > 95) and (AColor[3] > 190) then
    panel1.color :=clBLUE;

  //Grünanteil eines fotos
  if (AColor[1] > 190) and (AColor[2] < 50) and (AColor[3] < 50) then
    panel2.color :=clGREEN;

if panel1.color := clwhite then... ??!

danke.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: if routine für getpixel (brett vorm kopf)

  Alt 10. Feb 2011, 01:29
Suchst evtl. eine Schleife?
Delphi-Quellcode:
var
  x, y : integer;

x := 1;
y:= 1;
while panel1.Color = clWhite do
  begin
    ...
    Inc( x ); Inc( y ); // im 45 Grad Winkel durch das Bild
  end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (10. Feb 2011 um 01:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#3

AW: if routine für getpixel (brett vorm kopf)

  Alt 10. Feb 2011, 01:33
im prinzip schon...allerdings wollte ich nicht die ganzen farbsuchroutinen wieder runterschreiben sondern dachte ich könnte einfach die koordinaten oberhalb der suchroutinen ändern, so das automatisch nach den farben in der neuen koordinate gesucht wird....denn sonst wird der code ingesamt 10 mal so groß, wenn ich für jede koordinate noch 2 alternative angebe samt farbschemata :S
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: if routine für getpixel (brett vorm kopf)

  Alt 10. Feb 2011, 01:40


Eine Schleife ist dafür da einen Codeteil mehrmals zu durchlaufen, damit man den eben NICHT x-mal tippen muss.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#5

AW: if routine für getpixel (brett vorm kopf)

  Alt 10. Feb 2011, 02:04
i see

hab das hier jetzt ausprobiert, allerdings hängt er sich mehr oder weniger auf, ziel war eigentlich das er nach jedem durchlauf X um 1 erhöht wenn die farbe nicht gefunden wurde.

Code:
var
x:integer;

...
x:=0;

  while panel1.Color = clwhite do
 begin
 DWord(AColor) := GetPixel(dc,506+x,554);
 
 //Blauanteil eines Fotos
  if (AColor[1] > 220) and (AColor[2] > 95) and (AColor[3] > 190) then
    panel1.color :=clBLUE;

  //Grünanteil eines fotos
  if (AColor[1] > 190) and (AColor[2] < 50) and (AColor[3] < 50) then
    panel2.color :=clGREEN;

 x:= +1;
   end;
ne idee?
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#6

AW: if routine für getpixel (brett vorm kopf)

  Alt 10. Feb 2011, 08:17
x := x + 1; Aber dann sollte es eine zusätzliche Abbruchbedingung geben.

Vieleicht besser so:
Delphi-Quellcode:
for x := {xMin} to {xMax} do
begin
  if {TestFarbe1} then
  begin
    panel1.color := clBLUE;
    Break;
  end;
  if {TestFarbe2} then
  begin
    panel1.color := clGREEN;
    Break;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#7

AW: if routine für getpixel (brett vorm kopf)

  Alt 11. Feb 2011, 00:03
x := x + 1;
ahhh...das war der fehler! ihr seid die besten! vielen dank
kaum macht man es richtig, schon funktionierts

Geändert von rhodan (11. Feb 2011 um 00:06 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz