将图像的特定点放在另一个c#的特定点上

Placing specific point of image on specific point of another c#

我有一张坐标为 x1,y1 的图像。让我们说 (300,500)。我想在那里放置一张 50x50 的图像,但不是该图像的左上角,而是较小图像的 (x2,y2)。 (例如 (20,30)

像这样。我希望两个点在同一个地方

我试过类似的方法,但这会使我的小图像低于期望值。

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

有办法吗?

编辑: 刚刚意识到我的解决方案根本不起作用,因为它裁剪图像而不是将其放置在指定点上。

假设您有一个位于 (image1.x, image1.y)image1。你有 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.ximage2.y。让我们求解这些变量的方程式:

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

还有你必须放置第二张图片的地方。


希望一张图片能让这个更清楚: