Einzelnen Beitrag anzeigen

Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#1

TImage: Bild laden, Auswahlrahmen zeichnen,Farben vermischen

  Alt 12. Okt 2008, 02:07
Hallihallo,

ich hatte letztens schonmal in der gleichen Sache gepostet (VCL->Ein TImage über ein TImage32 legen... oder so), eigentlich bin ich jetzt nur insofern weiter, dass ich mehr Experimente hinter mir hab

Jedenfalls:
Ich will ein Programm schreiben, mit dem man bestimmte Ausschnitte aus Fotos kopieren kann. Das ganze natürlich mit ein paar nützlichen Hilfestellungen, sonst könnte man ja auch jedes Bildprogramm benutzen.
Man soll also ein Bild laden können, das einem dann auf der Form angezeigt wird. Es wird eine Auswahlbox über das Bild gezogen, damit man sieht was man sich jetzt genau holt. Diese Auswahlbox soll so aussehen wie der Rahmen im Windows XP-Explorer beim Auswählen von Dateien, nur in Grün
Jetzt hab ich die verschiedensten Sachen probiert: Foto in ein Image laden, Rahmen auf anderer Komponente zeichnen, die dann drübergelegt wird (bzw die ganze Zeit über dem Image liegt). Der innere Bereich des Rahmens soll ja aber halbtransparent sein. Also: Den Rahmen mit Scanline und pf32bit zeichnen und das Alpha-Byte entsprechend an den Stellen setzen, wo der Hintergrund durchschimmern soll. Problem dabei: Die komplette Box-Zeichnungs-Komponente wird weis, bis auf die Auswahlbox. Die hat ihre Farben so wie ich gerne hätte, nur dass im inneren Bereich nichts durchschimmert. Transparent=true ändert daran nichts.

Oder auch: Im Anzeige-Image nur ne Kopieinstanz des Fotos laden, und direkt im Image zeichnen (das Blending also selber rechnen). Problem: Zeichnen lässt mich das TImage wohl nur, wenn eine echte Bitmap geladen ist (der unwahrscheinliche Fall heutzutage...). Bei Jpegs (oder was auch immer) bekomme ich dann Zugriffsverletzung.

Oooooder: Wieder zwei Komponenten übereinander legen, nur ohne Alphabyte und Scanline, dafür mit Paintbox und komplett selber malen. Hier die Transparenz dann wieder selber rechnen, indem man nachguckt welchen Wert das Bild im TImage an der entsprechenden Stelle hat. (Also Paintbox auf Image, für die Pixel in der Paintbox manuell nachsehen was im Image drunter liegt und selber mischen). Problem: Auch lesen darf ich von der Image-Canvas nicht wenn keine echte Bitmap geladen ist.

What can I do? Ich würde es irgendwie gerne vermeiden wollen, je nach Dateityp ein anderes Zeichenverfahren zu nehmen :/
Das Problem ist ja eigentlich nur, dass ich das innere der Auswahlbox noch leicht gefärbt haben will. Ansonsten müsste ich ja garnicht auf das Image zugreifen. Wobei ich schon gespannt bin, wie ich aus dem Bild dann den gewünschten Bereich rauskopiere, wenn ich ja nicht lesen darf.

Gute Nacht,

Stefan
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat