AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ClickEvent auf formen (nichts quadratisches)

Offene Frage von "Freiwilderer"
Ein Thema von Freiwilderer · begonnen am 9. Jul 2009 · letzter Beitrag vom 10. Jul 2009
Antwort Antwort
Seite 2 von 2     12   
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#11

Re: ClickEvent auf formen (nichts quadratisches)

  Alt 10. Jul 2009, 10:12
Du weist ja welche Farbe im "bunten" Bild geklickt wurde, einfach das "bunte" Bild durchlaufen und immer wenn "geklickte Farbe", dann auf Schwarz/Weis Bild übertragen. Dazu würde ich das bunte Bild einfach am Anfang einmal in ein Array einlesen. Das ist dann schneller als ein TImage (bzw. weniger Denksport mit Scanlines)

Evtl. bietet Windows sogar ein maskiertes (mit der geklickten Farbe) kopieren des komplettes Bildes an.
  Mit Zitat antworten Zitat
Draos

Registriert seit: 12. Aug 2008
42 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: ClickEvent auf formen (nichts quadratisches)

  Alt 10. Jul 2009, 10:13
Schau dir mal Canvas.FloodFill() an. Die weiß ich gabs schon bei Delphi 6 und glaube auch 3.

Delphi-Quellcode:
 canvas.Brush.Color:=$FF0000; //hier die neue Farbe für den Bereich hin.
 canvas.FloodFill(x,y,$0000FF,fsSurface);//Rot ist die alte Farbe, fsSurface sagt, dass die alte Farbe der Bereich ist
  Mit Zitat antworten Zitat
Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: ClickEvent auf formen (nichts quadratisches)

  Alt 10. Jul 2009, 10:36
moin,
das mit dem floodfill klingt schonmal gar nicht schlecht.
habe das jetzt so hier stehen:
Delphi-Quellcode:
procedure TfrmPlanung.Image2MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 image2.canvas.FloodFill(x,y,GetPixel(Image1.Canvas.Handle,x,y),fsBorder);
end;
allerdings macht er mir einfach nur die komplette fläche, in der das bild zu sehen war weiß
irgendwas passt da noch nich so richtig ;D
  Mit Zitat antworten Zitat
Draos

Registriert seit: 12. Aug 2008
42 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: ClickEvent auf formen (nichts quadratisches)

  Alt 10. Jul 2009, 10:45
Das Prob an FloodFill ist, dass es allerdings nur mit einen Canvas arbeitet. Sprich wenn du Image2.canvas nimmst zeichnet der auch darauf. Canvas.Brush ist die Farbe un nimm mal fsSurface als Konstante. Allerdings kannst du sagen wir mal so:

Delphi-Quellcode:
procedure TfrmPlanung.Image2MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var i,j :Integer;
begin
 image2.canvas.Brush:=$123456;
 image2.canvas.FloodFill(x,y,clGreen,fsSurface);
 for i:= 0 to Image2.Width do
  for j:=0 to Image2.Height do
   if Image2.canvas.Pixels[i,j]=$123456 then
    Image1.Canvas.Pixels[i,j]:=clLime;
 Image2.canvas.Brush:=$clGreen;
 image2.Canvas.FloodFill(x,y,$123456,fsSurface);
end;
Er füllt die Fläche bei Image2 mit einer ganz bestimmten Farbe, zeichnet danach alle Pixels die bei Image2 die bestimmte Farbe haben bei Image1 farbig und setzt in Image2 die Farbe zum Schluß zurück.
  Mit Zitat antworten Zitat
Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: ClickEvent auf formen (nichts quadratisches)

  Alt 10. Jul 2009, 10:48
ach ja,
grundsätzlich wäre es mir am liebsten, wenn nur der rahmen, also die farbe schwarz
durch die andere farbe ersätzt wird.
bei dem fsBorder übermalt er mir, wie schon gesagt, das ganze bild, bei dem fsSurface macht er gar nichts

@Draos
Image1 ist das farbige bild im hintergrund, welches ich nicht verändern möchte
image2 ist das schwarz/weiß bild, bei dem ich im entsprechenden bereich schwarz durch eine andere farbe ersetzen möchte.

vielen dank für die mühen
  Mit Zitat antworten Zitat
Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: ClickEvent auf formen (nichts quadratisches)

  Alt 10. Jul 2009, 10:57
ha, jetzt gehts
ich poste nachher mal meine lösung, hab nur gedacht, nich, dass jemand jetzt noch stunden lang schreibt

vielen Dank draos, konnte mir aus deinem kram das zusammenbasteln, was ich gebraucht hab.
  Mit Zitat antworten Zitat
Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: ClickEvent auf formen (nichts quadratisches)

  Alt 10. Jul 2009, 11:21
so
also so läufts, so wie ich das gerne hätte,
zwar mit ner leichten verzögerung, aber da zwischendurch noch was anderes passieren wird, fällt das wohl kaum auf.
Delphi-Quellcode:
 for i := 0 to Image2.Width do
  for j := 0 to Image2.Height do
   if (Image2.Canvas.Pixels[i,j] = clBlack) and
      (Image1.Canvas.Pixels[i,j] = panel2.color)then
    Image2.Canvas.Pixels[i,j] := clAqua;

er sucht also den kompletten bereich ab, wenn der Bereich auf image2 schwarz ist
und auf image1 die farbe des angeklickten bereiches hat, überschreibt er das schwarz mit clAqua
so wird nur der Rand und nicht die komplette fläche mit einer neuen farbe versehen.

mfg
und nochmals vielen dank
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 22:10 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