Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengezum dan Menterjemah Imej dengan Betul dari Lokasi Tetikus?

Bagaimana untuk Mengezum dan Menterjemah Imej dengan Betul dari Lokasi Tetikus?

DDD
Lepaskan: 2025-01-01 04:18:10
asal
202 orang telah melayarinya

Zum dan Terjemah Imej daripada Lokasi Tetikus

Apabila cuba mengezum dan menterjemah imej dari lokasi tetikus, adalah penting untuk mempertimbangkan susunan transformasi digunakan untuk mencapai hasil yang diingini. Berikut ialah beberapa cadangan dan teknik untuk membetulkan isu:

  • Bahagian Transformasi: Asingkan kesan dan transformasi grafik yang berbeza kepada kaedah yang berasingan. Ini memudahkan proses dan mengurangkan kemungkinan ralat.
  • Mengutamakan Operasi Matriks: Gunakan Matrix.RotateAt dan Matrix.Darab daripada mengumpul transformasi Matriks, kerana ia lebih cekap dan kurang terdedah kepada hasil yang tidak dijangka.
  • Kanvas Dioptimumkan Pilihan: Gunakan PictureBox, yang merupakan Label rata bukan Sistem, sebagai kanvas. Ia menyokong penimbalan dua kali dan direka bentuk untuk melukis.

Dalam kod, empat mod zum dilaksanakan:

Mod Zum

  • Lokasi Imej: Penskalaan imej dilakukan tanpa mengubah lokasinya pada kanvas.
  • CenterCanvas: Imej kekal berpusat pada kanvas semasa diskalakan.
  • Tetikus Tengah: Imej berskala dan diterjemahkan untuk diselaraskan dengan lokasi penunjuk tetikus semasa pada kanvas.
  • MouseOffset: Imej diskalakan dan diterjemahkan untuk mengekalkan kedudukan relatif berdasarkan lokasi tetikus awal pada imej.

Sampel kod yang disertakan menjana transformasi putaran dan menunjukkan pelaksanaan keempat-empat mod zum. Pemilihan mod zum dikendalikan oleh enumerator bernama ZoomMode.

Tinjauan Keseluruhan Visual Fungsi

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

Kod Contoh

Kod berikut ialah disediakan:

  • kanvas: Kawalan PictureBoxEx tersuai (yang boleh diubah suai dan dilanjutkan) ditambahkan pada Borang.
  • trkRotationAngle: TrackBar digunakan untuk melaraskan putaran imej sudut.
  • radZoom_CheckedChanged: Pengendali acara untuk butang radio pemilihan mod zum.

Dalam kaedah canvas_Paint, imej lukisan diskalakan dan diputar menggunakan satu siri Transformasi matriks. Kaedah GetDrawingImageRect dan GetDrawingImageCenterPoint digunakan untuk mengira segi empat tepat dan titik tengah yang betul untuk melukis imej berskala. Dengan menggunakan transformasi dalam susunan tertentu, imej boleh dizum dan diterjemahkan sambil mengekalkan kedudukannya pada kanvas atau relatif kepada lokasi tetikus.

Atas ialah kandungan terperinci Bagaimana untuk Mengezum dan Menterjemah Imej dengan Betul dari Lokasi Tetikus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan