dc := getdc(0) ;
bitblt(
bmp.Canvas.Handle,//転送先デバイスコンテキスト(hdc)
0,//転送先左端の座標(int)
0,//転送先上端の座標(int)
100, //転送先横の幅(int)
100, //転送先縦の幅(int)
dc,//転送元デバイスコンテキスト(hdc)
0,//転送元左端の座標(int)
0,//転送元上端の座標(int)
srccopy) ;//ラスタオペレーション
bmp.SaveToFile('C:\cap.bmp');
releasedc(0,dc);
bmp.free;
画面の位置をキャプチャーし、ビットマップにしたいのですが、これだけでは足りないのでしょうか?
コンパイルは成功するし、BMPはできるのですが、0バイト。
例外処理、tryでくくったり、多少条件文はありますが、基本これが中心の処理です。
親切な方、どうかよろしくお願いします。
No.2ベストアンサー
- 回答日時:
あまり経験はないのですが、bmpのWidthとHeightを指定するとよさそうです。
Windows XP Pro SP2 + Delphi2007で確認しました。
--
var
dc: HDC;
bmp: TBitmap;
begin
dc := getdc(0) ;
bmp := TBitmap.Create;
bmp.Width:=100;
bmp.Height:=100;
bitblt(
bmp.Canvas.Handle, //転送先デバイスコンテキスト(hdc)
0, //転送先左端の座標(int)
0, //転送先上端の座標(int)
bmp.Width, //転送先横の幅(int)
bmp.Height, //転送先縦の幅(int)
dc, //転送元デバイスコンテキスト(hdc)
0, //転送元左端の座標(int)
0, //転送元上端の座標(int)
srccopy) ; //ラスタオペレーション
bmp.SaveToFile('C:\cap.bmp');
releasedc(0,dc);
bmp.free;
end;
--
あ、そういえば、ヴァージョンを書いていませんでした。^^
delphi6でした。w2kです。
結局、理由は、分かりませんでした。
hWndAll := GetDesktopWindow();
hWndDC := GetDC(hWndAll);
ReleaseDC(hWndAll, hWndDC);
で、問題は解決しました。
HPをまるパクリしてできなかったので、もしかしたら、ヴァージョンやOSによるのかもしれません。
ありがとうございます。
No.1
- 回答日時:
Delphiは全く知らないのですが、Win32APIなら少し・・。
しかし回答数が0なので、とりあえず助言程度ですがためになればと思います。
bitbltで問題が発生しているのか、SaveToFileで問題が発生しているのかで調べ方が変わってきますよね。
(ようはbitbltでコピーできていないのか、SaveToFileが正しく書き込んでいないのか。)
というわけで、BitBltの前後でbmp変数の内容をダンプしてみると、問題解決の糸口になると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB2005 スクロールバーポジション
-
エクセルVBAで画像を貼り付ける...
-
外付ディスプレイで AutoHotkey...
-
VBでデスクトップ上のアイコン...
-
Excel VBAで他アプリケーション...
-
NoxPlayerとUWSCのadbの座標に...
-
SDKにてRAW画像(ヘッダ情報0)...
-
VBでクリックイベントを発生さ...
-
テンプレートマッチングの座標...
-
マウスイベントが動かない
-
Hspゲーム
-
UWSC画像認識で座標の位置がず...
-
エクセルの座標系について
-
UWSCで特定の文字をクリックす...
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
エクセルVBAで、MsgBox やInput...
-
CloseとDisposeの違い
-
メルカリのメルカードで買い物...
-
月度は何て読みますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで画像を貼り付ける...
-
Excel VBAで他アプリケーション...
-
C#で、画像の、指定した座標の...
-
外付ディスプレイで AutoHotkey...
-
VBでクリックイベントを発生さ...
-
uwscについて、同一の画像(仮...
-
UWSCで特定の文字をクリックす...
-
UWSC画像認識で座標の位置がず...
-
マウスイベントが動かない
-
マウスストーカーのようにカー...
-
コントロール名とそのプロパテ...
-
VBAで ScreenToClient を使いたい
-
UWSファイルの編集?
-
UWSCのCHKIMG関数について
-
Visual Studio .NET 2003:右揃...
-
VBでデスクトップ上のアイコン...
-
バナーにリンクを埋め込む方法
-
UWSCのプログラミングついて教...
-
画像の座標取得
-
UWSCでPEEKCOLORを使い指定ウィ...
おすすめ情報