大きいCanvasでStretchDrawが正常にできません

解決


まさ  2010-01-28 02:52:16  No: 37304

度々お世話になっております。
非常に大きなサイズ(40MBくらい)を以下のようにStretchDrawすると失敗します。
これは縦横を半分に縮小しています。
Image->Picture->Bitmap->Canvas->StretchDraw( rect, bitmap );
bitmapのサイズを小さくすると正常にStretchDrawしてくれますが
大きなサイズでは無理なのでしょうか?


もしかして  2010-01-28 03:27:54  No: 37305

DelphiのTBitmapには巨大なBitmapを扱うことができないバグがあって、
C++Builderでもあるいは.....

Delphiでは DHGLというものが公開されていて、大きなBitmapを扱うためのTBigBitmapクラスがありますが。
http://www.asahi-net.or.jp/~HA3T-NKMR/DGS/


まさ  2010-01-28 19:22:42  No: 37306

お答えありがとうございます。
ちなみに失敗するのはStretchDrawだけで
DrawやTextOutは更に大きなサイズにしても正常に動作をしておりました。
教えていただいたサイトを見てみます。


Kenny  2010-01-28 19:28:00  No: 37307

ちょっと思ったんですけど、大きな画像を何回かに分けて少しずつ小さくしたら
どうなります?


まさ  2010-01-28 19:42:49  No: 37308

元Canvasから1/3ずつCopyRectしてそれをStretchDrawして
それを組み合わせるのはたぶんうまくいくとおもいます。
StretchDrawの引数のBitmapが大きくならないので。。(すみません試してはいないですが・・)
どうしてもダメなら分割してやることを考えていたのですが、
先ほど教えて頂いたサイトのBigBitmapを使ってみましたが
C++Builder2007でも普通に使えた上に正常に縮小することができました。
色々ご意見ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加