デスクトップに直接描画する方法があります。>にしの様

解決


まろ  2003-06-19 00:10:34  No: 3813

にしの様。
すみません、気になっていたもので・・・。
その「デスクトップに直接描画する方法」
を教えて頂けないでしょうか?
どのようにするのか興味があります。


にしの  2003-06-19 01:11:07  No: 3814

GetDC(0)でデバイスコンテキストを取得して、そこに描画するだけです。
こんな感じです。
ただし、画面にゴミが残る可能性があります。

procedure TForm1.FormCreate(Sender: TObject);
var
  DC: HDC;
  Image: TJPEGImage;
  bmp: TBitmap;
  i: integer;
begin
  Image := TJPEGImage.Create;
  try
    Image.LoadFromFile('hogehoge.jpg');
  except
    Image.Width := 100;
    Image.Height := 100;
  end;
  DC := GetDC(0);

  bmp := TBitmap.Create;
  bmp.Assign(Image);

  BitBlt(
    DC,
    (Screen.Width - Image.Width) div 2,
    (Screen.Height - Image.Height) div 2,
    bmp.Width,
    bmp.Height,
    bmp.Canvas.Handle,
    0,
    0,
    SRCCOPY);

  bmp.Free;

  ReleaseDC(0, DC);

  Image.Free;

  for i := 0 to 200 do
  begin
    sleep(1);
    Application.ProcessMessages;
  end;
end;


まろ  2003-06-19 05:24:28  No: 3815

ありがとうございます!
こうすると直接デスクトップに描画されるわけなんですね。
直接描画してしまっているから
エクスプローラや別の窓が重なると再描画されるわけでも
ないので消えてしまうんですね。
参考になりました。ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加