从 InkCanvas 容器中裁剪描边区域作为位图
Crop stroked region as Bitmap from InkCanvas Container
我刚开始使用 WPF 应用程序。在这里,我需要得到用户的签名。我正在使用 Inkcanvas
控件来实现此功能。
我很好奇 Inkcanvas 控件中是否有一种方法可以单独裁剪带有一些外边距的描边区域。我不希望输出位图图像中的 Inkcanvas 容器为空 space。如果签名太小,我想裁剪该区域并将其拉伸成特定大小(300x200)。
好的,首先您需要确定要裁剪的矩形("stroked region"),然后save it to an image。
InkCanvas 有一个Strokes
属性 是墨迹笔划的集合,你可以通过调用Stroke.GetBound 方法来获取每个Stroke 的边界。然后就可以得到"stroked region"的Left属性,也就是最左边边界的Left属性。你也可以用同样的方式得到 Right、Top 和 Bottom。希望你能理解我的解释。
将裁剪后的图像调整为 300x200 应该很容易,您可以在 Whosebug 上找到很多答案。
我认为这对 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...
有了边界矩形数据后,就很容易裁剪了。
希望对您有所帮助!
我刚开始使用 WPF 应用程序。在这里,我需要得到用户的签名。我正在使用 Inkcanvas
控件来实现此功能。
我很好奇 Inkcanvas 控件中是否有一种方法可以单独裁剪带有一些外边距的描边区域。我不希望输出位图图像中的 Inkcanvas 容器为空 space。如果签名太小,我想裁剪该区域并将其拉伸成特定大小(300x200)。
好的,首先您需要确定要裁剪的矩形("stroked region"),然后save it to an image。
InkCanvas 有一个Strokes
属性 是墨迹笔划的集合,你可以通过调用Stroke.GetBound 方法来获取每个Stroke 的边界。然后就可以得到"stroked region"的Left属性,也就是最左边边界的Left属性。你也可以用同样的方式得到 Right、Top 和 Bottom。希望你能理解我的解释。
将裁剪后的图像调整为 300x200 应该很容易,您可以在 Whosebug 上找到很多答案。
我认为这对 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...
有了边界矩形数据后,就很容易裁剪了。
希望对您有所帮助!