![]() |
[TBitmap32] - Transparent zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi DP,
ich habe folgendes Problem: Es gibt verschiedene Bitmaps:
Jetzt steht in der Datenbitmap nur eine Tabelle mit verschiedenen Texten ohne einen Hintergrund. Wenn ich jetzt die Datenbitmap dann auf die Bufferbitmap zeichne, überzeichnet er entweder die Hintergrundbitmap an der Stelle, oder er zeichnet gar nichts:
Delphi-Quellcode:
Ein kleiner Hinweis: Das Objekt "table" ist keine TBitmap32, sondern ein von TObject geerbetes TTimeTable:
bBuffer.SetSize(bTimeTable.Width, bTimeTable.Height); // Bufferbitmapgröße = Hintergrundbitmapgröße
BitBlt(bBuffer.Canvas.Handle, 0, 0, Width, Height, bTimeTable.Canvas.Handle, 0, 0, SRCCOPY); // Hintergrund auf Buffer zeichnen // Entweder habe ich das so getestet BitBlt(bBuffer.Canvas.Handle, 30, 39, table.Width, table.Height, table.ImageHandle, 0, 0, SRCCOPY); // Er überzeichnet alles an der Stelle // Oder table.DrawTo(bBuffer, 30, 39); // Er zeichnet gar nichts (Hinweis: table ist kein TBitmap32!) // Das hier dient zum erstellen eines Transparenten Fensters Size.cx := Width; Size.cy := Height; UpdateLayeredWindow(Handle, 0, nil, @Size, bBuffer.Handle, @P, 0, @BlendF, ULW_ALPHA);
Delphi-Quellcode:
Was kann man da tun?
procedure TTimeTable.DrawTo(Dst: TBitmap32; DstX, DstY: Integer);
begin bBitmap.DrawTo(Dst, DstX, DstY); end; Achso ein paar Hinweise:
Ehrlich gesagt weiß ich nicht weiter xD MfG xZise [edit]Ich habe es geschafft. Leider sehr unschön :( Ich habe einfach ein Hintergrundpixel denn ich einfach kopiere (auf das Datenbitmap), aber jetzt sieht die Schrift darauf nicht sehr toll aus :( (Siehe Anhang) Ich zeichne dass mit "Rendertext".[/edit] [edit] :wall: Info für mich selbst: Zeichne nur einmal die Schrift[/edit] |
Re: [TBitmap32] - Transparent zeichnen
Auch wenn es so aussieht, als würde das Problem behoben, ist dem nicht so!
MfG xZise |
Re: [TBitmap32] - Transparent zeichnen
Ich sehe nirgends, dass du dem Bitmap mit der Tabelle einen Alphakanal zuweist, weswegen .Draw{To}() natürlich einfach alles zeichnet.
Die einfachste Methode bei dir wäre es, wenn du Pixelweise durch das Bitmap gehst, und bei jedem Pixel dass die Hintergrundfarbe hat, seinen Alphawert zu ändern. (Der ist das höchstwertige Byte in dem TColor32 (welcher nur ein 32 Bit Integer ist).) dmBlend/cmBlend sind korrekt dafür. |
Re: [TBitmap32] - Transparent zeichnen
Also vorher das gesamte Bitmap mit der Farbe $00XXXXXX bemalen?
|
Re: [TBitmap32] - Transparent zeichnen
Ja.
|
Re: [TBitmap32] - Transparent zeichnen
Naja ich bemale jetzt das Bitmap mit Transparenten Schwarz (xD), aber leider funktioniert das weder mit BitBtl noch mit DrawTo :(
MfG xZise [edit]Nein :roll: Ich habe die Falsche Zeile auskommentiert ;) Funzt jetzt super xD thx :D[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz