掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
表示画像の中心を原点に画像の拡大・縮小表示するには? (ID:39750)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
「表示中心を原点に拡大・縮小」というのが 「いまScrollBoxの中心に表示されている画像上の一点が 拡大・縮小後もScrollBoxの中心にいるようにしたい」ということだと解釈します。 話を簡単にするため、ここではX座標についてだけ考えます。 まず、ScrollBoxの中心の座標 SX = ScroolBox.ClientWidth / 2 この座標をImageの座標系に換算します。 PX = SX + ScrollBox.HorzScrollBar.Position - Image1.Left ... (1) ここでImageをRate倍に拡大すると、Imageの座標系でPX にあった点は PX*Rate の位置に移動します。 PX' = PX * Rate これをScrollBoxの座標系に変換すると SX' = Image1.Left(変更後) + PX' - ScrollBox.HorzScrollBar.Position(変更後) ... (3) 拡大前後で中心座標が同じになるようにしたいわけですから SX=SX' とおいて(1)と(3)を解いてやることになります。 拡大・縮小後の中心座標を同じにする方法としては「Imageの位置をずらす」と 「スクロールバーの位置をずらす」の2通りが考えられます。 前者の場合、変更前後でスクロールバーの位置が同じなので: Image1.Left(変更後) = PX * (1 - Rate) + Image1.Left(変更前) 後者の場合、変更前後でImage1.Leftが同じなので: ScrollBox.HorzScrollBar.Position(変更後) = PX * (Rate - 1) + ScrollBox.HorzScrollBar.Position(変更前) もし拡大・縮小に合わせてスクロールバーの範囲も変えたいということだと、 Rangeもからんでくるのでさらにややこしい計算になりますけれど。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.