Размещение указанной c точки изображения на указанной c точке другой c# - PullRequest
0 голосов
/ 17 июня 2020

У меня есть изображение с координатами x1,y1. Допустим, (300,500). Я хочу разместить там изображение 50x50, но не верхний левый угол этого изображения, а (x2,y2) меньшего изображения. (например (20,30))

Примерно так. Я хочу, чтобы две точки были в одном месте enter image description here

Я пробовал что-то вроде, но это помещает мое маленькое изображение ниже желаемой точки.

  bigImage.DrawImage(smallImage, bigImage.x1, bigImage.y1,
    new Rectangle(smallImage.x2, smallImage.y2, smallImage.Height, smallImage.Width),
    GraphicsUnit.Pixel);

Есть ли способ сделать это?

Изменить: только что понял, что мое решение вообще не работает, потому что оно обрезает изображение, а не помещает его в указанную точку.

1 Ответ

1 голос
/ 17 июня 2020

Допустим, у вас есть image1, который находится в (image1.x, image1.y). И у вас есть image2, которое будет помещено в (image2.x, image2.y).

Кроме того, есть целевое местоположение в image1. Это целевое местоположение имеет координаты (image1.target.x, image1.target.y) внутри image1. Давайте преобразуем эти координаты в начало координат ...

Внутри image1 мы работаем в переведенной системе координат. Он компенсируется (image1.x, image1.y). Нам нужно добавить это смещение. Таким образом, положение цели в image1 относительно исходной точки равно (image1.x + image1.target.x, image1.y + image1.target.y).

Точно так же есть местоположение цели в image2. Это целевое местоположение имеет координаты (image2.target.x, image2.target.y) внутри image2. Это означает, что положение цели в image2 относительно исходной точки равно (image2.x + image2.target.x, image2.y + image2.target.y).

Мы хотим, чтобы эти две цели находились в одном месте относительно исходной точки:

(image1.x + image1.target.x, image1.y + image1.target.y)
=
(image2.x + image2.target.x, image2.y + image2.target.y)

Позвольте мне разбить это на компоненты:

image1.x + image1.target.x = image2.x + image2.target.x
image1.y + image1.target.y = image2.y + image2.target.y

Мы хотим заархивировать это, изменив положение image2. То есть изменив image2.x и image2.y. Давайте решим уравнения для этих переменных:

image2.x = image1.x + image1.target.x - image2.target.x
image2.y = image1.y + image1.target.y - image2.target.y

И вот где вы должны разместить второе изображение.


Надеюсь, изображение проясняет это:

enter image description here

...