
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- 写真・ビデオ LINEの動画送信でインカメラの場合、左右逆転になるのは避けられないですか? 1 2022/08/29 12:58
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- Android(アンドロイド) Aloha Browser でダウンロードしたファイルをPCに転送するには? 1 2022/05/23 18:54
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外付ディスプレイで AutoHotkey...
-
VBでデスクトップ上のアイコン...
-
Openglでテクスチャを透明にす...
-
uwscについて、同一の画像(仮...
-
UWSCのプログラミングついて教...
-
UWSCのPEEKCOLORについての質問
-
bitbltからの画像保存ができま...
-
C#で、画像の、指定した座標の...
-
UWSファイルの編集?
-
Excel VBAで他アプリケーション...
-
UWSCのCHKIMG関数について
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
エクセルVBAで、MsgBox やInput...
-
Excelシート上のマクロを登録し...
-
VBA エンターキーでイベントに...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
CloseとDisposeの違い
-
switch の範囲指定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#で、画像の、指定した座標の...
-
UWSC画像認識で座標の位置がず...
-
C言語でグラフ作成??
-
Excel VBAで他アプリケーション...
-
VBA HTML要素または文字の座標...
-
uwscについて、同一の画像(仮...
-
VBでクリックイベントを発生さ...
-
エクセルVBAで画像を貼り付ける...
-
マウスイベントが動かない
-
UWSCのプログラミングついて教...
-
PostScriptについて
-
VBでデスクトップ上のアイコン...
-
UWSCのCHKIMG関数について
-
LineTo,MoveToについて
-
マウスカーソルの移動
-
UWSファイルの編集?
-
DirectX テクスチャの拡大
-
VBAで ScreenToClient を使いたい
-
高さのあるクォータービューの...
-
UWSCでPEEKCOLORを使い指定ウィ...
おすすめ情報