Hallo erstmal
Hab da ne kleine Frage.
Ist es möglich , dass wenn ich ein Bild in ein Img lade, eine andere Img Komponente drüberlege und auf dieser mit canvas zeichne, das die 2. Ebene bis auf das Gezeichnete durchsichtig ist bzw transparent?
Ich weiss ich drücke mich oft undeutlich aus.
Also einfach nur eine 2. ebene Erschaffen wie zum Beispiel bei Photoshop.
Danke im Voraus.
lg sebi
Transparetes Feld
-
- Beiträge: 1910
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Transparetes Feld
Du kannst via Canvas eine Graphic auf eine andere Zeichnen:
ist nur etwas langsam, also das zeichnen dauert so c.a. 0,5 Sekunden
Ich habe aber auch mal vor etwas längerer Zeit eine Komponente Geschrieben für Images mit mehreren Layern vielleicht finde ich die wieder
Edit: Die Komponente (TLayeredImage): Link
PS: Bei Großen Bildern extrem Langsam (habe sie für kleine bilder so 100x50 px verwendet, da war die Komponente schon nicht schnell)
Ansonsten kannst du auch OpenGL oder SDL oder DirectDraw verwenden
Code: Alles auswählen
procedure DrawOpacity(PosX, PosY: integer; c: TCanvas; g: TGraphic; Opac: double);
type
TRGB = packed record
case byte of
0: (R, G, B: byte);
1: (Color: TColor);
end;
var
x, y: integer;
bmp: TBitmap;
r, r2: TRGB;
begin
bmp := TBitmap.Create;
try
bmp.Assign(g);
for y := 0 to bmp.Height do
for x := 0 to bmp.Width do
begin
r.Color := c.Pixels[PosX + X, PosY + y];
r2.Color := bmp.Canvas.Pixels[X, Y];
r.R:=round(r.R*(1-Opac)+r2.R*Opac);
r.G:=round(r.G*(1-Opac)+r2.G*Opac);
r.B:=round(r.B*(1-Opac)+r2.B*Opac);
c.Pixels[PosX + X, PosY + y]:=r.Color;
end;
finally
bmp.Free;
end;
end;
ist nur etwas langsam, also das zeichnen dauert so c.a. 0,5 Sekunden
Ich habe aber auch mal vor etwas längerer Zeit eine Komponente Geschrieben für Images mit mehreren Layern vielleicht finde ich die wieder
Edit: Die Komponente (TLayeredImage): Link
PS: Bei Großen Bildern extrem Langsam (habe sie für kleine bilder so 100x50 px verwendet, da war die Komponente schon nicht schnell)
Ansonsten kannst du auch OpenGL oder SDL oder DirectDraw verwenden
Zuletzt geändert von Warf am Mi 10. Jun 2015, 16:19, insgesamt 1-mal geändert.
Re: Transparetes Feld
Ich verstehe weder die Frage noch die Antwort so richtig, aber hier gibt es auch noch einige Infos:
http://wiki.freepascal.org/Developing_with_Graphics/de
http://wiki.freepascal.org/Developing_with_Graphics/de
Re: Transparetes Feld
danke werde ich mal anchauen dann finde ich dort meine Antwort vielen dank für die Hilfe