いつもお世話になっています、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
> 原因がわかりません、
プラットフォーム SDKのCreateCompatibleBitmapのヘルプに
「Windows NT/2000:拡張エラー情報を取得するには、GetLastError 関数を使いま
す。」
との記述があります。GetLastErrorを使用してみたら如何でしょう。
> (CreateCompatibleBitmap()大きさの限度があるみたい)
同じくプラットフォーム SDKのCreateCompatibleBitmapのヘルプに
「Windows 95/98:作成できるビットマップのサイズは、最大 16MB です。」
との記載がありますが、これ以降のOSに関する制約は記載されていません。
どうなんでしょうかね?
> どう対処すればいいでしょうか。
大きさの制約としたら、適度に分割して処理するのかな?
# 分割して目的に合致するかどうかはわかりませんが。
>原因がわかりません、(CreateCompatibleBitmap()大きさの限度があるみたい)
>どう対処すればいいでしょうか。
DDB ではなく DIB か DIBSection かを使いましょう
maruさん、しまさん
回答ありがとう。
>DDB ではなく DIB か DIBSection かを使いましょう
問題がDDBの処理ではなく、
DIBの処理することですね。
CreateDIBSection(。。。)
これから、DIBの処理をやってみます。
ありがとうございました。