ハンドルから直接TMemorystreamに保存できますか?

解決


TAKA  2006-02-25 15:11:45  No: 20208  IP: [192.*.*.*]

質問がおかしければお許しください。
下記のようにBitBltで取得した画像をTBitmapからTMemorystreamに入れる方法が
わかっているのですが、これをTBitmapを介さずにTMemorystreamに入れる事は可能なのでしょうか?

 BitBlt(bmp.canvas.handle, 0, 0, W, H, dc, X, Y, SrcCopy);
 bmp.savetostream(mem);

TBitmapを使うと遅いというイメージがあるので、もしかしたら直接TMemorystreamに書き込む早い方法があるのではないだろうか?と思ってネットで探し回ったのですが見つけきれなかったのでどなたかご存知ないでしょうか?
ちなみにネットからTHandleStream.Createを使えば出来るような感じだったのですがTHandleからTStreamに読み込ませる方法でした。
HDCからTMemorystreamにもこのTHandleStream.Create使えますか?いろいろしましたができませんでした ・・(o_ _)o

編集    削除
えーと  2006-02-25 23:35:04  No: 20209  IP: [192.*.*.*]

できません。APIでも何でも、DCのハンドルから直接画像としてビットマップを
得ることはできません。かならず、メモリDC(VCLの TBitmap 相当)を経由
する必要があります。

編集    削除
TAKA  2006-02-26 02:53:47  No: 20210  IP: [192.*.*.*]

そうなんですね。TBitmapを介したからと言ってそんなに速度に問題ないならいいのですが、とりあえずその方法で作ってみます。ありがとうございます。

編集    削除
TAKA  2006-03-01 10:58:07  No: 20211  IP: [192.*.*.*]

編集    削除