我希望创建一个自定义的InkCanvas Adorner,并找到背后的逻辑:
您可以重用现有的InkCanvasEditingMode.Select模式的lasso功能。然后,在SelectionChanged事件中,您可以获得对所选笔画(和/或元素)的引用。现在清除所选内容(去掉标准装饰器),然后打开自定义装饰器。
如何在自己的类中使用编辑模式继承InkCanvas类并访问事件?
class myInkCanvasClass : InkCanvas ?
{
base class constructor call ?
...
}发布于 2016-05-19 19:35:05
我成功地将InkCanvas类继承到我的CustomInkCanvas类,并获得了EventListener of SelectionChanged:
public class CustomInkCanvas : InkCanvas
{
//variables
//constructor
public CustomInkCanvas()
{
//...
}
override protected void OnSelectionChanged(EventArgs e)
{
MessageBox.Show("Selection Changed");
}
}所以如果我改变了一个选择,我就会被注意到。
发布于 2018-07-06 09:03:26
[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;
}发布于 2016-05-17 04:40:36
您不应该继承InkCanvas,SelectionChanged是InkCanvas上的一个公共事件,所以您只需向它添加一个处理程序。此外,EditingMode也是一个公共属性,您也可以在InkCanvas实例上设置它。因此,要将处理程序添加到SelectionChanged,并在Ink和Select之间切换EditingMode,只需使用InkCanvas实例的公共API即可。
基本例子:
inkCanvas.SelectionChanged += InkCanvas_SelectionChanged;
inkCanvas.EditingMode = InkCanvasEditingMode.Select;https://stackoverflow.com/questions/37261467
复制相似问题