Пусть пользователь перетаскивает изображение с прозрачными пикселями поверх фонового изображения в C#

В этом примере показано, как вы можете позволить пользователю перетащить изображение на PictureBox. Свойству PictureBox Изображение задано фоновое изображение. Пользователь может нажать на мышь на любом из непрозрачных пикселей изображения, чтобы перетащить изображение.

При запуске программа использует следующий код, чтобы подготовиться к перетаскиванию изображения.

Программа сначала получает изображение из ресурса smile и использует его для создания Bitmap. Он использует Bitmap 'MakeTransparent, чтобы сделать белые пиксели изображения прозрачными.

Программа сохраняет местоположение изображения в Rectangle с именем SmileyLocation. После загрузки изображения смайлирования программа инициализирует SmileyLocation в позицию (10, 10).

В следующем коде показан обработчик событий PictureBox Paint.

Этот код просто рисует изображение над фоном.

Когда пользователь нажимает кнопку мыши на PictureBox, следующий код начинает перетаскивать смайлик.

Переменная Перетаскивание записывает, переносит ли программа в настоящее время смайлик. Переменные OffsetX и OffsetY записывают расстояние между верхним левым углом изображения смайликов и местоположением мыши.

Обработчик события MouseDown вызывает метод PointIsOverPicture, описанный ниже, чтобы увидеть, находится ли мышь над непрозрачным пикселем в изображении смайликов. Если это над пикселем, программа устанавливает Dragging = true и сохраняет разницу между местоположением изображения смайликов и положением мыши.

При перемещении мыши следующий обработчик события MouseMove продолжает перетаскивание.

...

Если Перетаскивание является ложным, код вызывает метод PointIsOverPicture, чтобы увидеть, находится ли мышь над непрозрачным пикселом. Если это так, программа отображает курсор Hand. В противном случае он отображает курсор по умолчанию.

Когда пользователь отпускает мышь, следующий код заканчивает перетаскивание.

Следующий код показывает метод PointIsOverPicture, который возвращает true, если указанная позиция находится над непрозрачным пикселем на изображении смайликов.

Сначала код определяет, находится ли точка над ограничивающим прямоугольником изображения смайлика. Если это не так, метод возвращает false.

Источник: http://csharphelper.com/blog/2014/09/let-the-user-drag-an-image-with-transparent-pixels-over-a-background-image-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Adblock
detector