WPF InkCanvas 继承 class
WPF InkCanvas inherit class
我想创建一个自定义 InkCanvas Adorner 并找到背后的逻辑:
You can re-use the existing lasso functionality of the InkCanvasEditingMode.Select mode. Then, in the SelectionChanged event, you can get a reference to the selected strokes (and/or elements). Now clear the selection (to get rid of the standard adorner) and then bring up your custom adorner.
我如何继承 InkCanvas class 我自己的编辑模式 class 并访问事件?
class myInkCanvasClass : InkCanvas ?
{
base class constructor call ?
...
}
您不必继承 InkCanvas
,SelectionChanged
是 InkCanvas
上的 public 事件,因此您只需向其添加处理程序即可。此外,EditingMode
是一个 public 属性,您也可以在 InkCanvas
的实例上设置它。因此,要将处理程序添加到 SelectionChanged
并在 Ink
和 Select
之间切换 EditingMode
,您只需使用 public API 11=]实例。
基本示例:
inkCanvas.SelectionChanged += InkCanvas_SelectionChanged;
inkCanvas.EditingMode = InkCanvasEditingMode.Select;
我成功地将 InkCanvas Class 继承到我的 CustomInkCanvas Class 并获得了 SelectionChanged 的 EventListener:
public class CustomInkCanvas : InkCanvas
{
//variables
//constructor
public CustomInkCanvas()
{
//...
}
override protected void OnSelectionChanged(EventArgs e)
{
MessageBox.Show("Selection Changed");
}
}
因此,如果我更改选择,我会被注意到。
[DebuggerDisplay("[{Scene}]Strokes:{Strokes.Count}, Children:{Children.Count}")]
public class InkCanvas_Sandeep : InkCanvas
{
public int PagId = -1;
public InkCanvas_Sandeep()
{
DefaultDrawingAttributes.Color = Colors.Red;
DefaultDrawingAttributes.FitToCurve = true;
DefaultDrawingAttributes.Height = 2;
DefaultDrawingAttributes.Width = 2;
DefaultDrawingAttributes.IgnorePressure = false;
DefaultDrawingAttributes.IsHighlighter = false;
DefaultDrawingAttributes.StylusTip = System.Windows.Ink.StylusTip.Ellipse;
DefaultDrawingAttributes.StylusTipTransform = Matrix.Identity;
HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
SnapsToDevicePixels = true;
}
}
public void createMultipleInstances()
{
InkCanvas_Sandeep canvas new InkCanvas_Sandeep();
canvas.PagId = ++PageDetails.PageId;
}
我想创建一个自定义 InkCanvas Adorner 并找到背后的逻辑:
You can re-use the existing lasso functionality of the InkCanvasEditingMode.Select mode. Then, in the SelectionChanged event, you can get a reference to the selected strokes (and/or elements). Now clear the selection (to get rid of the standard adorner) and then bring up your custom adorner.
我如何继承 InkCanvas class 我自己的编辑模式 class 并访问事件?
class myInkCanvasClass : InkCanvas ?
{
base class constructor call ?
...
}
您不必继承 InkCanvas
,SelectionChanged
是 InkCanvas
上的 public 事件,因此您只需向其添加处理程序即可。此外,EditingMode
是一个 public 属性,您也可以在 InkCanvas
的实例上设置它。因此,要将处理程序添加到 SelectionChanged
并在 Ink
和 Select
之间切换 EditingMode
,您只需使用 public API 11=]实例。
基本示例:
inkCanvas.SelectionChanged += InkCanvas_SelectionChanged;
inkCanvas.EditingMode = InkCanvasEditingMode.Select;
我成功地将 InkCanvas Class 继承到我的 CustomInkCanvas Class 并获得了 SelectionChanged 的 EventListener:
public class CustomInkCanvas : InkCanvas
{
//variables
//constructor
public CustomInkCanvas()
{
//...
}
override protected void OnSelectionChanged(EventArgs e)
{
MessageBox.Show("Selection Changed");
}
}
因此,如果我更改选择,我会被注意到。
[DebuggerDisplay("[{Scene}]Strokes:{Strokes.Count}, Children:{Children.Count}")]
public class InkCanvas_Sandeep : InkCanvas
{
public int PagId = -1;
public InkCanvas_Sandeep()
{
DefaultDrawingAttributes.Color = Colors.Red;
DefaultDrawingAttributes.FitToCurve = true;
DefaultDrawingAttributes.Height = 2;
DefaultDrawingAttributes.Width = 2;
DefaultDrawingAttributes.IgnorePressure = false;
DefaultDrawingAttributes.IsHighlighter = false;
DefaultDrawingAttributes.StylusTip = System.Windows.Ink.StylusTip.Ellipse;
DefaultDrawingAttributes.StylusTipTransform = Matrix.Identity;
HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
SnapsToDevicePixels = true;
}
}
public void createMultipleInstances()
{
InkCanvas_Sandeep canvas new InkCanvas_Sandeep();
canvas.PagId = ++PageDetails.PageId;
}