Hi
DP,
ich habe folgendes Problem:
Es gibt verschiedene Bitmaps:
- Ein Hintergrundbitmap
- Eine "Datenbitmap"
- Eine Bufferbitmap
Ich zeichne das Fenster daraufhin transparent. Soweit alles okay.
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:
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);
Ein kleiner Hinweis: Das Objekt "table" ist keine TBitmap32, sondern ein von TObject geerbetes TTimeTable:
Delphi-Quellcode:
procedure TTimeTable.DrawTo(Dst: TBitmap32; DstX, DstY: Integer);
begin
bBitmap.DrawTo(Dst, DstX, DstY);
end;
Was kann man da tun?
Achso ein paar Hinweise:
- table.bBitmap.CombineMode = cmBlend oder cmMerge
- table.bBitmap.DrawMode = dmBlend oder dmCustom oder dmTransparent oder dmOpaque
- Alle anderen TBitmaps32.CombineMode = cmBlend
- Alle anderen TBitmaps32.DrawMode = dmBlend
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]
Info für mich selbst:
Zeichne nur einmal die Schrift[/edit]