• ベストアンサー

クリックした点を中止に拡大・縮小

CScrollViewを使い図形を描画し、 ルーペで図形を拡大したいと思っています。 単純な拡大は表示スケールをそのまま倍にすればよいのですが、クリックした点を中心に拡大することが出来ません。 どうしたらよいでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

拡大前のビューポイント=(Xv,Yv) (つまりウィンドウの左上点の図形上での座標) クリックした位置のビューポート上の座標=(Xp、Yp) とすると、クリックした位置の図形上での座標は(Xv+Xp、Yv+Yp) 拡大後にマウス位置が同じ点になるようにすればよいわけですな。 s倍に拡大したとすると、(s(Xv+Xp)、s(Yv+Yp)) この位置がビューポート上で(Xp、Yp)になればよいので、 ビューポイントを(sXv+(s-1)Xp、sYv+(s-1)Yp) にすればよいことになります。 ただし縮小する場合(s<1)、アプリケーション上の都合でビューポイントを 負にしたくないような場合があり、そのときは座標の調整が少し複雑になります。

youking
質問者

お礼

どうもありがとうございます。 数式を書いてみると分かりやすいですね。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

クリックした点を中心とした矩形が取得できれば、あとはCDC::StretchBlt()でしょうね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • イラストレーターで中心点を決め数値で拡大縮小方法

    イラストレーターを使っています。 オブジェクトを拡大縮小ツールで拡大したいのですが 中心点を設定したあとにリターンを押すと中心点が中央に戻ってしまいます。中心点を自分で設定した位置にしたまま、数値で拡大縮小の比率を決めるにはどうしたらよいでしょうか? 申し訳ありませんがよろしくお願いします。

  • ドラッグして描画図形を拡大縮小する方法

    マウスで選択すると、その選択した描画図形が拡大縮小するという方法を教えてほしいです。図形は、Canvasで描いています。お願いします。

  • CGIを使ってクリックで画像拡大・縮小

    こんにちわ。 至急皆様の回答を求めています。 やりたいこと↓ HP上で画像をクリック すると滑らかにクリックした画像の拡大したものを表示 もう一度クリックで拡大したものを元の大きさに縮小 イメージとしてはhttp://asp.e-life.co.jp/bk/bb/2000914138/34941/こんな感じです。 CGIは全く分からない素人です。 ですが至急必要です! 皆様の知恵をお貸し下さい!!

    • ベストアンサー
    • CGI
  • OpenGLの描画について(拡大縮小等)

    今OpenGLの勉強をしながらプログラムを組んでます。 図形を描画して拡大縮小まではできました。 static Skx, Sky, Skz, gluLookAt(Skx, Sky, Skz, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); #--- キーボード操作による関数(Skx,Sky,Skzの操作) #--- これで拡大縮小はできるようになったのですが、ある一定のところまで縮小すると背景に埋め込まれるような感じで目線より遠い部分から隠れていくような感じになってしまいます。 (拡大すると隠れた部分は戻ってきます) なぜこのようなことが起こるのでしょうか。 お分かりの方がいらっしゃいましたら教えて頂ければ幸いです。 また、回避方法もご教示頂けたらと思います。

  • loadMovie の拡大縮小

    初めまして、ActionScript についてご質問があります。 loadMovie で外部ファイルのswfを、ムービークリップ「screen」で表示させています。 ボタンで以下のActionScriptを使って、 「screen」を拡大縮小しようと思っております。 on(release){ screen._xscale *=1.2; //幅を1.2倍に拡大 screen._yscale *=1.2; //高さを1.2倍に拡大 } on(release){ screen._xscale /=1.2; //幅を1/1.2倍に縮小 screen._yscale /=1.2; //高さを1/1.2倍に縮小  } これだと無限に拡大縮小ができてしまいます。 上限下限を設定することは可能でしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 選択範囲の拡大

    いつもお世話になっております。 現在、VC++のMFCで図形の描画に携わっているのですが、 図形の一部分を選択し、その選択した部分のみ拡大して表示する方法はありますでしょうか? 例えば四角形を一つ描き、一角の部分だけ選択して表示させる場合などです。 もし何かお分かりになる方がおられましたらご返答宜しくお願い致します。

  • AfterEffectで円を拡大する方法

    現在、AfterEffectで円を拡大するアニメーションを作ろうとしているのですが、円の中心座標がずれてしまい、解決方法がわからず質問させていただきました。 また私は、AfterEffectを使い始めて一ヶ月未満の初心者です。 円を拡大する方法ですが、スケールの100%の値を200%等に変更しているだけなのですが、この方法でやると円の中心点がスケールする毎に変わってしまい、左寄りに拡大するような形になってしまいます。 私としては、円の中心点を変更せずに、まるで拡大するようにアニメーションしたいのです。 どのようにすれば、この問題を解決できるでしょうか?初歩的な質問で申し訳ありませんが、ご回答いただけると幸いです。

  • ??イラストレーターでの図形拡大・縮小??

    多角形ツール等で作成した図形を拡大・縮小する時、線幅は入力値のままですが、大きさに応じて同比率の線幅にしたいのですが、方法を教えて下さい。お願いします。

  • アドビのイラストレーターの画像ボックスがマウスで拡大縮小できない

    アドビのイラストレーター8.0を使用しています。選択ツール(黒矢印)でテキストボックスや画像を選択して、その辺の中心にある点をクリックしながらドラッグすると拡大縮小ができました。ところが今は移動しかできません。このようになる以前は、画像ボックスの四隅と辺の中心の4点の合計8点に拡大縮小できる点が出ましたが、今は四隅の点しかありません。初期設定のように、マウスで画像ボックスを拡大縮小できるようにする方法を教えてください。

  • ベクターワークス 図形と文字の同時拡大縮小とシンボルの拡大縮小

    ベクターワークス12.5 WINを使用しています。 図面を書いていて、例えばある形を単純に半分の大きさに縮小しようとすると、図形は縮小されても書き込んでいる文字は元のポイント数のままで残ってしまいます。イラストレーターなどでは文字や線の太さまで拡大縮小も同時にできるのですが、ベクターワークスにはそういう機能は無いものなのでしょうか。  また、シンボル登録してある図形(便器など)は、図面を拡大縮小するとシンボルだけはそのままのサイズで残ってしまいます。図面といっしょにサイズを変えることはできないものでしょうか。

距離をおきたい
このQ&Aのポイント
  • 女性に質問です。困ってます。
  • 会うのも難しくなっちゃうから一回距離おいてもいい?
  • 彼女と復縁したいのですがどうしたらいいでしょうか?
回答を見る