Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bitmap32 auf ZielBitmap32 malen (https://www.delphipraxis.net/117988-bitmap32-auf-zielbitmap32-malen.html)

DeddyH 30. Jul 2008 12:24

Re: Bitmap32 auf ZielBitmap32 malen
 
Ich könnte es zu Hause mal versuchen (ca. gegen 18:00).

taaktaak 30. Jul 2008 12:33

Re: Bitmap32 auf ZielBitmap32 malen
 
Will ja nicht nerven, aber ist
Zitat:

..weil ich dann meine transparenz verlieren würde..
nicht eine Anforderung, die für die Verwendung von BitBlt() spricht?

stOrM 30. Jul 2008 12:34

Re: Bitmap32 auf ZielBitmap32 malen
 
Zitat:

Zitat von DeddyH
Ich könnte es zu Hause mal versuchen (ca. gegen 18:00).

Wäre echt mehr als genial!
Schick mir einfach ne PM, wenn Du soweit bist ich sende dir dann alles was du brauchst zu!

Viele Grüße
Marc

stOrM 30. Jul 2008 12:35

Re: Bitmap32 auf ZielBitmap32 malen
 
Zitat:

Zitat von taaktaak
Will ja nicht nerven, aber ist
Zitat:

..weil ich dann meine transparenz verlieren würde..
nicht eine Anforderung, die für die Verwendung von BitBlt() spricht?

Öm sorry ich will dich ja nicht ignorieren, aber ich brauch die Graphics32 noch für andere Sachen, soweit ich weiss kann ich da mit Bitblt nix anfangen...

turboPASCAL 30. Jul 2008 12:56

Re: Bitmap32 auf ZielBitmap32 malen
 
BitBlt ignoriert das "Reserwed"-Byte eines Bitmaps welches bei der GR32 als Alphakanal verwenet wird.
Das sind Altlasten der Windowsvorgänger ni nichts mit Transpatenzen zu schaffen haben "wollten".


Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
var qb1, qb2, qb3, ziel: TBitmap32;
begin
  //Erzeugen und Zeichnen der 3 Quellbitmaps
  qb1 := TBitmap32.Create;
  try
    qb1.Width := 20;
    qb1.Height := 40;
    qb1.FillRect(0,0,20,40, clRed32);
    // Oder
    // DrawTo(Dst: TBitmap32; DstX, DstY: Integer; const SrcRect: TRect);

    qb2 := TBitmap32.Create;
    try
      qb2.Width := 20;
      qb2.Height := 40;
      qb2.FillRect(0,0,20,40, clYellow32);

      qb3 := TBitmap32.Create;
      try
        qb3.Width := 20;
        qb3.Height := 40;
        qb3.FillRect(0,0,20,40, clBlue32);

        //Erzeugen und Zeichnen der Zielbitmap
        ziel := TBitmap32.Create;
        try
          ziel.Width := 60;
          ziel.Height := 40;
          //linke Quellbitmap
          ziel.Draw(0,0 ,qb1);
          //mittlere Quellbitmap
          ziel.Draw(qb1.Width,0,qb2);
          //rechte Quellbitmap
          ziel.Draw((qb1.Width + qb2.Width),0,qb3);
          ziel.DrawTo(Self.Canvas.Handle, 10, 10);
        finally
          ziel.Free;
        end;
      finally
        qb3.Free;
      end;
    finally
      qb2.Free;
    end;
  finally
    qb1.Free;
  end;
end;
... was klappt da jetzt nicht ?

taaktaak 30. Jul 2008 13:18

Re: Bitmap32 auf ZielBitmap32 malen
 
@turboPASCAL: Vielen Dank für den Hinweis!

stOrM 30. Jul 2008 15:38

Re: Bitmap32 auf ZielBitmap32 malen
 
Hallo Turbo :-)
Naja das drawing klappt nun so wie es sollte nuuuuur (links und rechts die grafiken sind nu nicht mehr transparent) *heul
Die linke und rechte Grafik dient eigentlich nur dazu um das Rechteck abzurunden, daher haben diese beiden Grafiken oben sowie unten jeweils einen Transparenten Pixel, der nicht zu sehen sein sollte nur das ist er aber, was ziemlich bescheuert aussieht jetzt, da könnte ich mir die linke un d rechte Grafik direkt sparen und nen Rechtangle malen :-(

turboPASCAL 30. Jul 2008 16:42

Re: Bitmap32 auf ZielBitmap32 malen
 
Mach ma 'n Bild btte wie es ist und wie es sein soll.

stOrM 30. Jul 2008 16:47

Re: Bitmap32 auf ZielBitmap32 malen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von turboPASCAL
Mach ma 'n Bild btte wie es ist und wie es sein soll.

Kann ich machen, ich kann dir auch das Project senden wie du magst?

Ich hoffe man kanns erkennen, bei dem "Sonicht" sind man relativ klein diese dunklen Rechtecke. 4 Stück an der Zahl bei Outleft, OutRight.

Medium 31. Jul 2008 01:26

Re: Bitmap32 auf ZielBitmap32 malen
 
Ich gehe mal davon aus, dass die Maske im PNG hinterlegt ist. Probier mal den DrawMode der Bitmaps auf dmBlend zu setzen.
Wenn das nicht hilft, kann mir gut vorstellen, dass der Tranfer des Alphakanals von der PNG Kompo zum Bitmap32 nicht so geht. In dem Fall wäre es praktisch, wenn man die Maske des PNGs als Bitmap bekommen könnte, da man sie dann mit IntensityToAlpha() den jeweiligen Bitmaps zu Fuß eintrichtern kann. Aber ich tippe zunächst mal auf den DrawMode.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 Uhr.
Seite 3 von 6     123 45     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz