> 백엔드 개발 > C++ > 마우스 위치에서 이미지를 올바르게 확대/축소하고 변환하는 방법은 무엇입니까?

마우스 위치에서 이미지를 올바르게 확대/축소하고 변환하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-01 04:18:10
원래의
227명이 탐색했습니다.

마우스 위치에서 이미지 확대/축소 및 변환

마우스 위치에서 이미지를 확대/축소하고 변환하려고 할 때 변환이 적용되는 순서를 고려하는 것이 중요합니다. 원하는 결과. 다음은 문제를 해결하기 위한 몇 가지 제안 및 기술입니다.

  • 변환 분할: 별개의 그래픽 효과와 변환을 별도의 방법으로 분리합니다. 이렇게 하면 프로세스가 단순화되고 잠재적인 오류가 줄어듭니다.
  • 행렬 작업 우선 순위 지정: 행렬 변환을 누적하는 대신 Matrix.RotateAt 및 Matrix.Multiply를 활용하세요. 더 효율적이고 예상치 못한 결과가 발생할 가능성이 적습니다.
  • 최적화된 캔버스 선택: 비시스템 플랫 레이블인 PictureBox를 캔버스로 사용합니다. 이중 버퍼링을 지원하며 그리기용으로 설계되었습니다.

코드 내에서 4가지 확대/축소 모드가 구현됩니다:

확대/축소 모드

  • ImageLocation: 이미지 크기 조정은 위치를 변경하지 않고 수행됩니다. canvas.
  • CenterCanvas: 크기가 조정되는 동안 이미지는 캔버스 중앙에 유지됩니다.
  • CenterMouse: 현재 마우스 포인터 위치 canvas.
  • MouseOffset: 이미지의 초기 마우스 위치를 기반으로 상대적인 위치를 유지하기 위해 이미지의 크기가 조정되고 변환됩니다.

포함된 코드 샘플 회전 변환을 생성하고 네 가지 확대/축소 모드 모두의 구현을 보여줍니다. 확대/축소 모드 선택은 ZoomMode라는 열거자에 의해 처리됩니다.

기능의 시각적 개요

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

샘플 코드

다음 코드는 제공됨:

  • 캔버스: 양식에 추가된 사용자 정의 PictureBoxEx 컨트롤(수정 및 확장 가능).
  • trkRotationAngle: 이미지 회전 조정에 사용되는 TrackBar angle.
  • radZoom_CheckedChanged: 확대/축소 모드 선택 라디오 버튼에 대한 이벤트 핸들러.

canvas_Paint 메서드에서 그리기 이미지는 일련의 매트릭스 변환. Get DrawingImageRect 및 Get DrawingImageCenterPoint 메서드는 크기가 조정된 이미지를 그리기 위한 올바른 사각형과 중심점을 계산하는 데 사용됩니다. 특정 순서로 변형을 적용하면 캔버스에서의 위치나 마우스 위치를 기준으로 이미지의 위치를 ​​유지하면서 이미지를 확대/축소하고 변환할 수 있습니다.

위 내용은 마우스 위치에서 이미지를 올바르게 확대/축소하고 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿