Einzelnen Beitrag anzeigen

Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#1

Bitmap am Desktop zeichnen

  Alt 31. Mai 2004, 09:21
Delphi-Quellcode:
Source:

// Deklaration für Delphi 3 und früher:
// procedure DrawPicture(const FileName: String; Width, Height, Top, Left: Integer);
// Bei Height und Width müssen dann 0 übergeben werden, damit das Bild in Standardgröße
// gezeichnet wird!

procedure DrawPicture(const FileName: String; Width: Integer = 0;
  Height: Integer = 0; Top: Integer = 0; Left: Integer = 0);
var
  DC : HDC;
  Canvas : TCanvas;
  Bitmap : TBitmap;
begin
  // Falls die Datei existiert, dann fortfahren
  if FileExists(FileName) then
  begin
    Bitmap := TBitmap.Create(Self);
    try
      Bitmap.LoadFromFile(FileName);
      // Falls eigene Parameter angeben sind, werden diese benutzt.
      if Height > 0 then
        Bitmap.Height := Height;
      if Width > 0 then
        Bitmap.Width := Width;
      // Wir holen uns den 'Device Context' vom Desktop
      DC := GetWindowDC(GetDesktopWindow());
      try
        Canvas := TCanvas.Create();
        try
          // Wir weisen den DC dem Canvas zu
          Canvas.Handle := DC;
          // Das Bild wird an Left / Top auf den Desktop gezeichnet
          Canvas.Draw(Left, Top, Bitmap);
        finally
          Canvas.Free;
        end;
      finally
        ReleaseDC(0, DC);
      end;
    finally
      Bitmap.Free;
    end;
  end;
end;
Mit dieser Routine kann man eine Bitmap auf dem Desktop zeichnen.
Parameter:
  • const FileName: String
    Der Dateiname der Datei. Muss der gesamte Pfad zur Datei sein. Außerdem muss das Bild im Bitmap-Format sein.
  • Width: Integer = 0
    Die Breite des Bildes. Bei 0 wird die Standardgröße verwendet.
  • Height: Integer = 0;
    Die Höhe des Bildes. Bei 0 wird die Standardgröße verwendet.
  • Top: Integer = 0;
    Der Abstand vom oberen Desktoprand.
  • Left: Integer = 0;
    Der Abstand vom linken Desktoprand.

Der SourceCode stammt von Nicodius und wurde von mirage228 überarbeitet.

[edit=Chakotay1308]Für die CodeLibary vorbereitet. Mfg, Chakotay1308[/edit]
Nico Müller
  Mit Zitat antworten Zitat