ホームページ >バックエンド開発 >C++ >マウスの位置から画像を正しくズームおよび変換するにはどうすればよいですか?

マウスの位置から画像を正しくズームおよび変換するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-30 06:40:14497ブラウズ

How to Correctly Zoom and Translate an Image from a Mouse Location?

マウスの位置から画像をズームおよび移動する

このシナリオでは、画像が「ジャンプ」し、再配置された原点からの拡大縮小に失敗します。マウスの位置から画像の中心までの移動が正しく計算されません。また、画像をスケーリングした後の変換では、スケーリングされた画像のサイズが考慮されないため、不正確な結果が生じます。

この問題を解決するには、変換シーケンスは次のようにする必要があります:

  1. Translate to (0, 0): 画像を原点に移動して、画像から変換を適用できるようにします。
  2. 画像を拡大縮小します: (0, 0) でズーム倍率を適用します。
  3. マウスの位置に戻します: マウスを追加します位置を画像の中心のあるべき場所に戻します。

サンプルは次のとおりです。実装:

private void pnl1_Paint(object sender, PaintEventArgs e)
{
    // Translate to (0, 0)
    e.Graphics.TranslateTransform(-img.Width / 2, -img.Height / 2);

    // Scale the image
    e.Graphics.ScaleTransform(zoom, zoom);

    // Translate back to mouse location
    e.Graphics.TranslateTransform(mouse.X, mouse.Y);

    // Draw the image at the new location
    e.Graphics.DrawImage(img, 0, 0);
}

以上がマウスの位置から画像を正しくズームおよび変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。