CScrollView で拡大・縮小を実装するには

[戻る]
シャノン 2005/06/12(日) 23:14:58
お世話になります。よろしくお願いいたします。

現在、CScrollView で、簡単な画像ビューワを作っています。
これに拡大・縮小表示機能をつけたいのですが、詰まっています。
具体的には、マッピングモードを MM_ISOTROPIC にし、SetWindowExt と 
SetViewportExt で拡大率を設定しています。
これで画像は拡大できるのですが、スクロールバーがそれにあわせて変化しません。
CScrollView::SetScrollSizes には MM_ISOTROPIC は渡せません。
この場合、スクロールバーを適切に変更させるには、どうしたらよろしいのでしょう
か?

環境は WinXP Pro SP2 + VC++ 7.1 MFC MDI です

エートリーぶ 2005/06/13(月) 12:39:25
>CScrollView::SetScrollSizes には MM_ISOTROPIC は渡せません。
既に、「Spy++」等を使って確認されているのであれば、
私の知識も、これまでです。

MM_ISOTROPIC・・・?(>私)

dairygoods 2005/06/13(月) 12:51:09
直接的な対策ではないですが、
マッピングモードは使わないで、StretchBltを使う。
とか、
バックバッファに好きなマッピングモードで描いてから画面に転送する。
とか。

シャノン 2005/06/13(月) 15:36:55
レスありがとうございます。
拡縮自体はマッピングモードを使って行い、SetScrollSizes にはピクセル単位の値を自前で計
算して渡してやることで、正常にスクロールするようになりました。
が、今度は CRectTracker を使った画像の範囲選択で詰まっています。
CScrollView で CRectTracker を使うには、一筋縄では行かないようです。
まだ問題の整理が自分の中で付いておりませんので、詳細な書き込みは控え、スレはとりあえず
開いたままとさせていただきます。

シャノン 2005/06/14(火) 22:45:04
試行錯誤しております。
CScrollView::SetScrollSizes でスクロール領域のサイズを指定しても、実際に View 
のサイズが広がるわけではないので、スクロールしてから CRectTracker で矩形選択し
ても、座標はスクロールしていない時と同じものになっています。
これに拡縮が加わると、もう頭がぐるぐるです…

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