如何在 .net 中修改 InkCanvas 的 InkStrokes?
How to modifying InkStrokes of an InkCanvas in .net?
我正在开发一个通用的 windows 平台应用程序,想修改 Ink Canvas 中存在的 Ink Strokes 属性,我所知道的是我可以访问如下:
IReadOnlyList<InkStroke> = inkCanvas.InkPresenter.StrokeContainer.GetStrokes();
任何编辑这些东西的大小或颜色并重新绘制它们的例子?
另一个问题是我怎样才能有一个绘制笔画的事件?
例如,我如何在同一 Ink Canvas 上的另一个位置实时绘制完全相同的笔划?
您可以通过为 InkStroke.DrawingAttributes
设置新的 InkDrawingAttributes
来重绘存在于 Ink Canvas 中的 Ink Strokes。
private void Button_Click(object sender, RoutedEventArgs e)
{
InkDrawingAttributes attr = new InkDrawingAttributes();
attr.Color = Colors.Red;
attr.IgnorePressure = true;
attr.PenTip = PenTipShape.Circle;
attr.Size = new Size(4, 10);
attr.PenTipTransform = Matrix3x2.CreateRotation((float)(70 * Math.PI / 180));
IReadOnlyList<InkStroke> InkStrokeList = MyInk.InkPresenter.StrokeContainer.GetStrokes();
foreach (InkStroke temp in InkStrokeList)
{
temp.DrawingAttributes = attr;
}
}
当应用程序线程处理一个或多个笔划(从湿到干),然后将现有的 InkStrokes 复制到 Ink 的新点 Canvas 时,会发生 InkPresenter.StrokesCollected
事件。
您可以使用以下代码在同一 Ink Canvas 的另一个位置实时绘制完全相同的笔画。
public MainPage()
{
this.InitializeComponent();
MyInk.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Touch;
MyInk.InkPresenter.StrokesCollected += InkPresenter_StrokesCollected;
}
private void InkPresenter_StrokesCollected(InkPresenter sender, InkStrokesCollectedEventArgs args)
{
foreach (var temp in args.Strokes)
{
temp.Selected = true;
sender.StrokeContainer.CopySelectedToClipboard();
sender.StrokeContainer.PasteFromClipboard(new Point(100, 100));
}
}
我正在开发一个通用的 windows 平台应用程序,想修改 Ink Canvas 中存在的 Ink Strokes 属性,我所知道的是我可以访问如下:
IReadOnlyList<InkStroke> = inkCanvas.InkPresenter.StrokeContainer.GetStrokes();
任何编辑这些东西的大小或颜色并重新绘制它们的例子?
另一个问题是我怎样才能有一个绘制笔画的事件? 例如,我如何在同一 Ink Canvas 上的另一个位置实时绘制完全相同的笔划?
您可以通过为 InkStroke.DrawingAttributes
设置新的 InkDrawingAttributes
来重绘存在于 Ink Canvas 中的 Ink Strokes。
private void Button_Click(object sender, RoutedEventArgs e)
{
InkDrawingAttributes attr = new InkDrawingAttributes();
attr.Color = Colors.Red;
attr.IgnorePressure = true;
attr.PenTip = PenTipShape.Circle;
attr.Size = new Size(4, 10);
attr.PenTipTransform = Matrix3x2.CreateRotation((float)(70 * Math.PI / 180));
IReadOnlyList<InkStroke> InkStrokeList = MyInk.InkPresenter.StrokeContainer.GetStrokes();
foreach (InkStroke temp in InkStrokeList)
{
temp.DrawingAttributes = attr;
}
}
当应用程序线程处理一个或多个笔划(从湿到干),然后将现有的 InkStrokes 复制到 Ink 的新点 Canvas 时,会发生 InkPresenter.StrokesCollected
事件。
您可以使用以下代码在同一 Ink Canvas 的另一个位置实时绘制完全相同的笔画。
public MainPage()
{
this.InitializeComponent();
MyInk.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Touch;
MyInk.InkPresenter.StrokesCollected += InkPresenter_StrokesCollected;
}
private void InkPresenter_StrokesCollected(InkPresenter sender, InkStrokesCollectedEventArgs args)
{
foreach (var temp in args.Strokes)
{
temp.Selected = true;
sender.StrokeContainer.CopySelectedToClipboard();
sender.StrokeContainer.PasteFromClipboard(new Point(100, 100));
}
}