このスレッドはロックされています。記事の閲覧のみとなります。
トップページ > 記事閲覧
半透明ウィンドウのキャプチャ
日時: 2005/05/06 22:58
名前: WoodyBells管理人

BitBlt API のdwRopに「CAPTUREBLT」を追加してやることにより、
透明度も合わせてコピーできます。
私の使用しているDelphi5では「CAPTUREBLT」の定義がないため、
自分で宣言します。

const
  CAPTUREBLT = $40000000;


実際のBitBltはこんな感じ↓(あえて書くほどのものでも無いですが)

BitBlt(コピー先のHDC, 0, 0, 640, 480, コピー元のHDC, 0, 0, SRCCOPY + CAPTUREBLT);

また、半透明ウィンドウはWindows2000以降のみサポートされているため、
事前にOSを判定してdwRopにCAPTUREBLTを追加するかどうかを判定します。
拙作WinShotでは↓の関数を使って、戻り値がTrueの場合はCAPTUREBLTを
追加しています。

function CaptureBltSupported: Boolean;
var
  OSVersionInfo: TOSVersionInfo;
begin
  OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
  GetVersionEx(OSVersionInfo);
  with OSVersionInfo do
    Result := dwMajorVersion > 4;
end;

ま、そんな感じで。
メンテ

Page: 1 |