裁剪区域作为InkCanvas容器的位图

时间:2015-04-01 07:00:13

标签: c# wpf image-processing inkcanvas

我刚刚开始使用WPF应用程序。在这里,我需要从用户那里获得签名。我正在使用Inkcanvas控件来实现此功能。

我很想知道在Inkcanvas控件中是否有一种方法可以单独裁剪描边区域和一些外边距。我不希望输出位图图像中的Inkcanvas容器的空白空间。如果签名太小,我想裁剪区域并将其拉伸到特定大小(300x200)。

2 个答案:

答案 0 :(得分:2)

好的,首先你需要确定要裁剪的矩形("描边区域"),然后save it to an image

InkCanvas具有Strokes属性,它是墨迹笔划的集合,您可以通过调用Stroke.GetBound方法获取每个笔划的边界。然后你可以获得" stroked region"的Left属性,它是最左边界的Left属性。而且你也以同样的方式获得了Right,Top和Bottom。我希望你能理解我的解释。

将裁剪的图像大小调整为300x200应该非常简单,您可以在Stackoverflow上找到大量答案。

答案 1 :(得分:0)

我认为这对于Windows 10 Universal来说已经改变了。在某些方面,虽然不同,但可能会更容易一些。

使用InkCanvas,你有InkPresenter.StrokeContainer,你可以从那里获得BoundingRect属性,它将为你提供大量有关笔画边界矩形的细节(即x,y,width,height,left,right)等等......)

所以,这就是我所做的:

 var bounds = myCanvas.InkPresenter.StrokeContainer.BoundingRect;
 var left = bounds.Left;
 var right = bounds.Right;
 //and so on...

获得边界矩形数据后,很容易裁剪。

希望这有帮助!