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

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

Susan Sarandon
Lepaskan: 2024-12-27 06:37:09
asal
179 orang telah melayarinya

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

Mengezum dan Menterjemah Imej daripada Lokasi Tetikus

Artikel ini menangani isu mengezum (menskalakan) imej daripada lokasi tetikus menggunakan perubahan dalam acara Cat. Selepas menterjemahkan asal bitmap ke lokasi tetikus, imej itu diskalakan dan asalnya diterjemahkan kembali. Walau bagaimanapun, imej "melompat" dan gagal berskala dari asal yang dipindahkan semasa terjemahan lokasi tetikus.

Penyelesaian:

Untuk menyelesaikan isu ini, kami melaksanakan strategi berikut:

  1. Bahagi dan Takluk: Pecahkan kesan grafik dan transformasi kepada kaedah khusus yang melaksanakan tugas tertentu. Reka kaedah ini untuk berfungsi bersama dengan lancar apabila diperlukan.
  2. Pastikan Mudah: Elakkan mengumpul berbilang transformasi grafik dalam operasi Matrix. Gunakan Matrix.Multiply dan Matrix.RotateAt untuk pengiraan yang lebih mudah.
  3. Gunakan Alat yang Betul: Gunakan PictureBox (atau Label rata bukan Sistem) sebagai "kanvas" dan bukannya Panel . PictureBox menyediakan penimbalan dua kali secara lalai dan direka bentuk untuk lukisan.

Untuk demonstrasi visual, kod sampel kami melaksanakan empat mod zum dalam kawalan PictureBoxEx tersuai:

  • Lokasi Imej: Skala imej pada tempatnya, mengekalkan kedudukan semasanya pada kanvas.
  • CenterCanvas: Imej mengekalkan kedudukan tengahnya pada kanvas semasa menskala.
  • Tetikus Tengah: Imej berskala dan menterjemah ke tengah sendiri pada lokasi semasa penuding tetikus pada kanvas.
  • MouseOffset: Imej berskala dan menterjemah untuk mengekalkan kedudukan relatif yang ditentukan oleh lokasi penuding tetikus awal pada imej.

Kod:

Kod yang disediakan dalam jawapan memperkenalkan kawalan tersuai PictureBoxEx yang diwarisi daripada PictureBox dan termasuk fungsi tersuai. Ia juga termasuk pembolehubah kanvas, yang mewakili kawalan tersuai yang ditambahkan pada borang semasa permulaan. Enum ZoomMode digunakan untuk mentakrifkan mod zum yang berbeza.

Pengendali acara untuk acara tetikus dan bar trek, serta logik lukisan teras, mengendalikan operasi zum dan putaran berdasarkan mod zum yang dipilih.

Ingat untuk mengubah suai rentetan imagePath ke laluan sebenar fail imej anda sebelum menjalankan kod.

Faedah:

Pendekatan ini menyediakan kaedah yang lebih cekap dan stabil untuk mengezum dan menterjemah imej dari lokasi tetikus. Ia mengurangkan kemungkinan artifak visual yang tidak dijangka atau isu prestasi apabila mengendalikan transformasi yang kompleks.

Atas ialah kandungan terperinci Bagaimana untuk Mengezum dan Menterjemah Imej dengan Betul dari Lokasi Tetikus dalam C#?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan