Transparetes Feld

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Dragomir
Beiträge: 40
Registriert: Di 28. Apr 2015, 12:06

Transparetes Feld

Beitrag von Dragomir »

Hallo erstmal :D

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

Warf
Beiträge: 1910
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Transparetes Feld

Beitrag von Warf »

Du kannst via Canvas eine Graphic auf eine andere Zeichnen:

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.

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Re: Transparetes Feld

Beitrag von theo »

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

Warf
Beiträge: 1910
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Transparetes Feld

Beitrag von Warf »

Wenn du etwas mehr mit Transparenz machen willst solltest du vielleicht auch mal darüber nachdenken BGRABitmaps zu benutzen

Link
und
Link

Dragomir
Beiträge: 40
Registriert: Di 28. Apr 2015, 12:06

Re: Transparetes Feld

Beitrag von Dragomir »

danke werde ich mal anchauen dann finde ich dort meine Antwort vielen dank für die Hilfe :D

Antworten