gpt4 book ai didi

c# - 在 C# 中裁剪图像

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:38 25 4
gpt4 key购买 nike

我正在使用 c# 3.5 GDI 在桌面应用程序中做一个有限的图形编辑器。用户首先选择一个显示在图片框控件中的图像,该控件的尺寸较小,因此会调整图像大小以适合图片。

对于裁剪,用户选择要裁剪的区域。网上有很多例子解释了如何裁剪图像,但没有一个解释了在缩略图上选择区域但裁剪是在原始图像上完成的情况,即在两者之间完成某种映射图片。

所有的图形编辑器都提供相似的功能。你能告诉我一个解释如何做到这一点的链接吗?

最佳答案

在我看来,您需要根据图片和缩略图的相对大小自行计算原始图片上的裁剪矩形。

public static class CoordinateTransformationHelper
{
public static Point ThumbToOriginal(this Point point, Size thumb, Size source)
{
Point rc = new Point();
rc.X = (int)((double)point.X / thumb.Width * source.Width);
rc.Y = (int)((double)point.Y / thumb.Height * source.Height);
return rc;
}

public static Size ThumbToOriginal(this Size size, Size thumb, Size source)
{
Point pt = new Point(size);
Size rc = new Size(pt.ThumbToOriginal(thumb, source));
return rc;
}

public static Rectangle ThumbToOriginal(this Rectangle rect, Size thumb, Size source)
{
Rectangle rc = new Rectangle();
rc.Location = rect.Location.ThumbToOriginal(thumb, source);
rc.Size = rect.Size.ThumbToOriginal(thumb, source);
return rc;
}
}

使用示例:

Size thumb = new Size(10, 10);
Size source = new Size(100, 100);
Console.WriteLine(new Point(4, 4).ThumbToOriginal(thumb, source));
Console.WriteLine(new Rectangle(4, 4, 5, 5).ThumbToOriginal(thumb, source));

关于c# - 在 C# 中裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1999644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com