使用System.Drawing制作选择工具,并在vb.net中裁剪图像

时间:2009-09-04 21:00:51

标签: vb.net image-manipulation crop

如果我想在VB.net中裁剪图像,我该怎么做呢?我试图让用户拖出他们想要的框(system.drawing.rectangle),它会自动删除框周围的边缘。

我的第一个问题主要是我无法使system.drawing.rectangle可见。它根本没有显示,我正在以编程方式设置它的位置和高度,但没有任何显示。我知道可能有一些我很遗憾的东西......但我似乎无法找到它。

然而,我的大问题在于裁剪本身。我根本找不到任何作物方法。有一个隐藏的我错过了吗?或者我必须自己编码吗?我该怎么做呢?它应该能够输出到位图图像对象。

感谢您的帮助,我很惊讶以前没有问过这个......

2 个答案:

答案 0 :(得分:1)

关于你的第一个问题:一个矩形本身不可见。您必须使用Graphics对象的DrawRectangle(...)方法在画布上绘制它。要绘制选择工具,您需要设置Pen对象的DashCap和DashPattern属性。

要“裁剪”图像,您基本上想要拍摄由较小的矩形描绘的较大图像的部分,并将其转换为新的位图。这可以使用Graphics对象的DrawImage(...)方法的30个重载中的一个来完成。您可以将裁剪部分保持在原始尺寸(导致比原始尺寸更小的位图),也可以将其“炸毁”到原始图像的大小。如果你采用后一种方法,通常最好将你的Graphics对象的InterpolationMode属性设置为HighQualityBicubic(我认为这是唯一的),因为默认的InterpolationMode非常糟糕。

在.Net中有许多不同的呈现图像的方法 - 如果您发布了一些代码,可能会有所帮助,并且会解释您遇到的确切问题。

Here is another answer,其中包含指向示例应用的链接(以及C#中的源代码,对不起),可能有助于您入门。

答案 1 :(得分:0)

CodeProject上有很多关于这些主题的文章:

选择你最喜欢的味道(虽然我鼓励你查看C#项目 - 它不应该太难转换)。

<强> VB
Image Cropping with Image Resizing Using vb.net

<强> C#
Cropping Images An Easy to Use Image Resizing and Cropping Control
Image Processing using C#(参见剪裁部分 - 我能够在我的一个项目中使用此代码)

<强> WPF / C#
WPF Interactive Image Cropping Control
A Photoshop-like Cropping Adorner for WPF