ピクチャーコントロールのBMPサイズ変更

解決


すだこ  2007-10-11 00:50:47  No: 66540

VS2005にてMFCを使って作成しています。
需要のある処理だと思ったのですが、サンプル等が見つからなかったので
質問します。
ピクチャコントロールにリソースに追加したBMPイメージをを表示しているのですが
このビットマップを大きくして表示したいのです。
ですが、単にBMPイメージを大きくすると、リソースが大きくなるので
今の大きさのBMPイメージをプログラムで大きくして表示したいと思っているの
ですが、やり方が分からず困っています。

調べると、StretchBlt()というのを使って拡大/縮小ができるようですが
使い方が分かりません(泣)
そもそもデバイスコンテキストなるものをよく分かっていません。。。。
そんな自分ですが、よろしくお願いします。

あと、検索するとピクチャボックスという単語を良くみるのですがVS2005の前は
ピクチャボックスという名前でピクチャコントロールと同じコントロールだと
思って良いのでしょうか?

現在の処理
.h
  CBitmap  m_bmp;
  CStatic m_Pic1;

.cpp(OnInitDialog()内)
  m_bmp.LoadBitmap(IDB_BITMAP1);
  m_Pic1.SetBitmap((HBITMAP)m_bmp);


subaru  2007-10-11 19:31:47  No: 66541

MoveWindowかSetWindowPosでコントロールの
サイズを変更するだけではダメでしたか?


すだこ  2007-10-12 01:42:14  No: 66542

SetWindowPos()でコントロールのサイズを変えても
ダメでした。
StretchBlt()を使って拡大しようと頑張っています。
(今のところ何も表示されないんですが・・・)
拡大が出来るまでは、とりあえずBMPリソースを2種類(大と小)用意して
切り替えて使っています。


subaru  2007-10-12 02:05:03  No: 66543

単純にピクチャーコントロールをダイアログに貼り付けて
プロパティのTypeをビットマップ、Imageにリソースを指定後
OnInitDialogでコントロールのサイズを変えたら拡大されましたけどね?
ちなみにStretchBlt()を使うとなるとコントロールをサブクラス化して自前で描画することになると思います。


すだこ  2007-10-12 03:42:08  No: 66544

別プロジェクトを新規作成してやってみたところ
SetWindowPos()でコントロールの大きさを変えたら
中のビットマップの大きさも変わりました。

ということで、今のプロジェクトに何らかの
問題があるということが分かりました。(領域破壊とか...)
今の処理を全部見直してみたいと思います。
ありがとうございました。


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

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






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