![]() |
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? |
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:
Nun kannst du in diem Anzeigebitmapimage deine Markierungen
ImageX.Picture.Bitmap.Canvas. ...
zeichen. Wenn diese wieder gelöscht werden sollen kopierst du wieder das orginal Image. |
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... |
Re: In TImage Bereich hervorheben
Schau dir
![]() |
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 02:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz