Einzelnen Beitrag anzeigen

Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

Bitmap in Statusbar transparent zeichnen will ... - erledigt

  Alt 7. Jul 2009, 18:14
Hi,

Ich mochte ein Bitmap in ein Panelteilchen einer Statusbar transparent zeichnen.
Zeichnen klappt aber die Transparenz fehlt.

Was mach ich denn nicht richtig ?
Liegt es vill. an CopyRect ?

So schauts aus:

Delphi-Quellcode:
 // Bitmap für Statusanzeige erstellen
  StatusBitmap := TBitmap.Create;
  try
    // Bilder für Statusanzeige laden
    StatusBitmap.LoadFromResourceID(hInstance, 300);
    StatusBitmap.Transparent := true;
    StatusBitmap.TransparentColor := StatusBitmap.Canvas.Pixels[0,0];

    StatusBar1.Panels[0].Width := StatusBar1.ClientWidth - StatusBitmap.Width - 8; // -8 wegen Umrandung bzw. Trenner
  except


// ------------ * schnipp * --------------

procedure TfrmGameWnd.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const _Rect: TRect);
begin
  if Panel = StatusBar1.Panels[1] then // zweites Panel
  begin
    with StatusBar.Canvas do
    begin
      if UnitExtras.Optionen.Sound <> 0 then
        CopyRect( RECT(_Rect.Left, _Rect.Top,_Rect.Left+16,_Rect.Top+16), StatusBitmap.Canvas, RECT(0,0,16,16));

      if UnitExtras.Optionen.BKMusik then
        CopyRect( RECT(_Rect.Left+16, _Rect.Top,_Rect.Left+16+16,_Rect.Top+16), StatusBitmap.Canvas, RECT(16,0,16+16,16));
    end;
  end;
end;
// Edit:
Ja, es liegt an CopyRect, man nutze TransparentBlt.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat