Registriert seit: 28. Okt 2011
45 Beiträge
|
AW: Bildanalyse/-vergleich
9. Dez 2011, 22:24
Nun steh ich wieder vor der Frage wie ich folgendes Problem lösen soll.
Ich muss nun um die gefundenen Punkte (X,Y), die im Stringgrid aufgelistet werden, ein Quadrat malen und dieses dann ausfüllen. (im Image3)
Hierfür hab ich zwei Prozeduren. Aber irgendwie verstehe ich nicht wie diese im Zusammenhang stehen.
Sowas hab ich leider noch nie gemacht.
Zum Beispiel weiß ich nicht was ich konkret für oldcolor einsetzen soll ( für fillcolor denk ich mal clred einsetzen) und wie ich diese Prozedur aufrufen kann.
Des Weiteren bin ich mir unsicher wie ich mit left_ und top_ umgehen soll. Ich vermute mal damit brauche ich nur die obere linke Ecke des Quadrats.
Ich sehe nur noch
Delphi-Quellcode:
procedure tform1.floodFill_(x,y,fillColor,oldColor: integer);
begin
with image3.canvas do
if (pixels[x,y]=oldColor) then
begin
Pixels[x,y]:= fillcolor;
floodFill_(x+1,y, fillcolor, oldColor);
floodFill_(x-1,y, fillcolor, oldColor);
floodFill_(x,y+1, fillcolor, oldColor);
floodFill_(x,y-1, fillcolor, oldColor);
end;
end;
Delphi-Quellcode:
procedure tform1.quadratmalen(image,top_,left_,kantenlaenge,farbe:integer);
var
x,
y,
kante // Kantenlänge des Quadrats
:integer;
begin
kante:=spinedit2.value;
quadratmalen(image1,x-(kante/2),y-(kante/2),kante,clred); // Quadratmalen mittels zeichnen der 4 Linien
quadratmalen(image2,x-(kante/2),y-(kante/2),kante,clred); // und dann Füllen mit Füllfunktion
quadratmalen(image3,x-(kante/2),y-(kante/2),kante,clred); // Ist dieser Zusammenhang richtig??
quadratmalen(image4,x-(kante/2),y-(kante/2),kante,clred);
case image of
1:
with form1.image1.canvas do
begin
end;
2:
with form1.image2.canvas do
begin
end;
3: // nur im Image3 werden die Quadrate gemalt!
with form1.image3.canvas do
begin
end;
4:
with form1.image4.canvas do
begin
end;
end;
end;
|