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