Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi In TImage Bereich hervorheben (https://www.delphipraxis.net/139302-timage-bereich-hervorheben.html)

hadschi92 26. Aug 2009 13:31


In TImage Bereich hervorheben
 
Um dem Nutzer eine grafische Ausgabe zu geben, möchte ich in einem TImage bestimmte Bereiche hervorheben. Von diesen Bereichen habe ich die Koordinaten der einzelnen Pixel und diese hängen eigentlich immer zusammen. Wie kann ich diese Bereiche hervorheben?

Ich habe an verschiedene Lösungswege gedacht:

Ein zweites, gleichgroßes TImage über das erste legen und dieses als halb durchsichtig definieren (geht das?) und dann die betreffenden Koordinaten mit einer bestimmten Farbe z.B. Pink markieren.

Oder noch besser, einen Rahmen um die Pixel, bzw. um das Objekt zeichnen. In etwa wie in Gimp.

Doch wie lässt sich das realisieren?

turboPASCAL 26. Aug 2009 16:19

Re: In TImage Bereich hervorheben
 
Lege ein zweites (T)Image an, welches du dann anzeigst.
Kopiere in dieses dein oroginales Image als Bitmap.
Delphi-Quellcode:
ImageX.Picture.Bitmap.Canvas. ...
Nun kannst du in diem Anzeigebitmapimage deine Markierungen
zeichen. Wenn diese wieder gelöscht werden sollen kopierst du
wieder das orginal Image.

hadschi92 27. Aug 2009 10:22

Re: In TImage Bereich hervorheben
 
Hm, ja dann kann ich doch aber gleich auf das erste TImage schreiben und das originale einfach so im Speicher behalten...

Was mich jetzt aber reizen würde, ist so ein Auswahlrahmen wie in GIMP, sowas sieht einfahch geil aus. Habt ihr da Ansätze? Der Rahmen ist ja nicht starr, sondern Teilweise animiert...

Medium 27. Aug 2009 10:32

Re: In TImage Bereich hervorheben
 
Schau dir den da mal an. Der hat sowas, und auch den Source dabei - grad noch nachgeschaut.

hadschi92 29. Aug 2009 13:01

Re: In TImage Bereich hervorheben
 
Ok, ich hab jetzt die Graphics32 Library gefunden, damit lässt sich das super realisieren. Ein kleines Beispiel damit es auch andere nachvollziehen können:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not Timer1.Enabled then
    Timer1.Enabled := true
    else
      Timer1.Enabled := false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Image321.Bitmap.SetStipple([clBlack32, clWhite32]); //Farbe des Rahmens setzen
  Image321.Bitmap.StippleStep := 0.35;                //Gibt an in welchem Abstand sich die Farben abwechseln
  Timer1.Interval := 50;                              //Mit Hilfe des Timers kann man die Geschwindigkeit des Rahmens einstellen
end;

procedure TForm1.Timer1Timer(Sender: TObject);        //Timer der den Rahmen immer wieder neuzeichnet
begin
  Image321.Bitmap.FrameRectTSP(10, 10, 100, 100);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 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