Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从InkCanvas容器将笔划区域裁剪为位图_C#_Wpf_Image Processing_Inkcanvas - Fatal编程技术网

C# 从InkCanvas容器将笔划区域裁剪为位图

C# 从InkCanvas容器将笔划区域裁剪为位图,c#,wpf,image-processing,inkcanvas,C#,Wpf,Image Processing,Inkcanvas,我刚开始在WPF应用程序中工作。在这里,我需要得到用户的签名。我正在使用Inkcanvas控件来实现此功能 我很想知道Inkcanvas控制中是否有一种方法可以单独裁剪带有一些外部边界的笔划区域。我不希望输出位图图像中Inkcanvas容器的空白。如果签名太小,我想裁剪区域并将其拉伸到特定大小(300x200)。好的,首先需要确定要裁剪的矩形(“笔划区域”),然后 InkCanvas有一个Strokes属性,它是墨迹笔划的集合,您可以通过调用方法获得每个笔划的边界。然后您可以得到“笔划区域”的左

我刚开始在WPF应用程序中工作。在这里,我需要得到用户的签名。我正在使用
Inkcanvas
控件来实现此功能


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

好的,首先需要确定要裁剪的矩形(“笔划区域”),然后

InkCanvas有一个
Strokes
属性,它是墨迹笔划的集合,您可以通过调用方法获得每个笔划的边界。然后您可以得到“笔划区域”的左属性,这是最左边边界的左属性。你也可以用同样的方法得到正确的,顶部和底部。我希望你能理解我的解释


将裁剪后的图像大小调整为300x200应该很容易,你可以在Stackoverflow上找到很多答案。

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

使用InkCanvas,您可以使用InkPresenter.StrokeContainer,从中可以获得BoundingRect属性,该属性将为您提供大量有关笔划边界矩形的详细信息(即x、y、宽度、高度、左、右等)

下面是我所做的:

 var bounds = myCanvas.InkPresenter.StrokeContainer.BoundingRect;
 var left = bounds.Left;
 var right = bounds.Right;
 //and so on...
一旦有了边界矩形数据,就很容易裁剪


希望这有帮助

InkCanvas
的纵横比限制为预设大小(300 x 200)会更容易,但用户输入时会感到舒适。我的意思是,将此
InkCanvas
设置为600x400,并将整个InkCanvas保存为图像,然后将其大小调整为300x200。因为它可能很难检测到“中风区域”。@kennyzx。假设我有600x400的
InkCanvas
。如果用户仅使用该容器的50x50进行签名。然后,如果我保存整个
InkCanvas
,输出中将有很多空白。我不想那样。我想要单独使用的空间。谢谢。让我试试这个,终于找到了
GetBound
帮了我一把。但是,实现该功能需要一些时间:)。