現在、ズーム可能な UserControl を作成しようとしています。現在、https://web.archive.org/web/20141229192708/http://bobpowell.net/zoompicbox.aspxで Bob Powell の例に従っていますが、達成しようとしているのは、左上隅ではなく、コントロールの中心点にズームすることです。
これについて経験/アイデアを持っている人はいますか?
現在、ズーム可能な UserControl を作成しようとしています。現在、https://web.archive.org/web/20141229192708/http://bobpowell.net/zoompicbox.aspxで Bob Powell の例に従っていますが、達成しようとしているのは、左上隅ではなく、コントロールの中心点にズームすることです。
これについて経験/アイデアを持っている人はいますか?
コントロールの値を中央でオフセットし、スケール変換を適用してからオフセットする必要があります。
新しい左上を計算するには、次のアルゴリズムを試してください。
(-old_centre * factor) + old_centre
コントロールが 100,100 の場合、ズーム係数 2 は次のようになります。
((-50, -50) * 2) + (50, 50) = (-100, -100) + (50, 50) = (-50, -50)
ズーム倍率 0.5 の場合:
((-50, -50) * 0.5) + (50, 50) = (-25, -25) + (50, 50) = (25, 25)