CreateCompatibleBitmapの取得失敗

[戻る]
dd 2010/02/01(月) 17:48:30
いつもお世話になっています、ddです。

画像の回転処理をやっています、
CBitmap rot;// 回転後ビットマップ
CBitmap *old;// 古いビットマップオブジェクト
// 回転後ビットマップ作成
int rd =rot.CreateCompatibleBitmap(pDC, m_dstWidth, m_dstHeight);
if(rd==0)
    AfxMessageBox("rd表示失敗");

小さいサイズのフルカラーが回転できます、
大きいのサイズ(フルカラー 5793(幅)*5793(高さ))が
CreateCompatibleBitmapの取得が失敗しました。

原因がわかりません、(CreateCompatibleBitmap()大きさの限度があるみたい)
どう対処すればいいでしょうか。

よろしくお願いします。
環境:.Net2002 Windows XP

maru 2010/02/01(月) 18:45:38
> 原因がわかりません、
プラットフォーム SDKのCreateCompatibleBitmapのヘルプに
「Windows NT/2000:拡張エラー情報を取得するには、GetLastError 関数を使いま
す。」
との記述があります。GetLastErrorを使用してみたら如何でしょう。

> (CreateCompatibleBitmap()大きさの限度があるみたい)
同じくプラットフォーム SDKのCreateCompatibleBitmapのヘルプに
「Windows 95/98:作成できるビットマップのサイズは、最大 16MB です。」
との記載がありますが、これ以降のOSに関する制約は記載されていません。
どうなんでしょうかね?

> どう対処すればいいでしょうか。
大きさの制約としたら、適度に分割して処理するのかな?
# 分割して目的に合致するかどうかはわかりませんが。

しま 2010/02/02(火) 01:17:53
>原因がわかりません、(CreateCompatibleBitmap()大きさの限度があるみたい)
>どう対処すればいいでしょうか。

DDB ではなく DIB か DIBSection かを使いましょう

dd 2010/02/02(火) 14:01:02
[[解決]]
maruさん、しまさん
回答ありがとう。

>DDB ではなく DIB か DIBSection かを使いましょう
問題がDDBの処理ではなく、
DIBの処理することですね。
CreateDIBSection(。。。)
これから、DIBの処理をやってみます。

ありがとうございました。

古いスレッドには追加発言できません。