Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
Delphi XE2 Architect
|
Re: "Ambilight"- Glow- Effekt um Image
6. Mär 2009, 23:11
Hallo Jürgen,
vielen Dank für diese Funktion, die ich so mit eingebaut habe:
Delphi-Quellcode:
procedure TForm1.sButton2Click(Sender: TObject);
var img1,img2:TBitmap32; r:TRect;
begin
img1:=TBitmap32.Create;
img2:=TBitmap32.Create;
//Hole das Bild aus der TImage32-Komponente
img2.Assign(image321.Bitmap);
//Platz schaffen für's Überstrahlen
img1.SetSize(img2.Width+80,img2.Height+80);
//Zoomen mit ein wenig Platz
img1.Draw(rect(20,20,img1.Width-20,img1.Height-20),
rect(0,0,img2.Width,img2.Height),img2);
//aus gr_fastfx
ApplySaturationLut(img1,SaturationLut(680));
GaussianBlur(img1,8);
//intern
FastBlur(img1,2,15);
//aus gr_graphutils
DrawSides(img2,img2.ClipRect,clWhite,clWhite,ALLFRAME_SIDES,200,2);
r:=img1.BoundsRect;
r.Right:=r.Right-1;
r.Bottom:=r.Bottom-1;
DrawSides(img1,r,clWhite,clWhite,ALLFRAME_SIDES,200,2);
//Und zurück in die Komponente
image321.Bitmap.SetSize(img1.Width+1,img1.Height+1);
image321.Bitmap.Draw(0,0,img1);
image321.Bitmap.Draw(40,40,img2);
end;
Die zusätzlichen Routinen kommen von einer Bibliothek gr32exv0.9 eines chinesischen Programmierers. Dort gibt es auch einen Ansatz, wie man den Background der TImage32-Komponente transparent bekommt. Leider gab es beim "mergen" mit meiner D2009-Version von Graphics32 eine Reihe von Problemen, die bis ich jetzt nicht lösen konnte.
Als Skinning-Lösung benutze ich die AlphaControl-Lib. Der erste Schritt passt (mir) schon ganz gut. Das mit der Transparenz bekomme ich auch noch hin. Vielen Dank nochmals für Deinen Ansatz.
--
Andreas
Andreas
|
|
Zitat
|