[英]WPF InkCanvas inherit class
我想創建一個自定義InkCanvas Adorner並找到背后的邏輯:
您可以重復使用InkCanvasEditingMode.Select模式的現有套索功能。 然后,在SelectionChanged事件中,您可以獲得對所選筆划(和/或元素)的引用。 現在清除選擇(擺脫標准裝飾)然后調出自定義裝飾。
如何在我自己的類中使用編輯模式繼承InkCanvas類並獲取對事件的訪問權限?
class myInkCanvasClass : InkCanvas ?
{
base class constructor call ?
...
}
你不應該從繼承InkCanvas
, SelectionChanged
是一個公共事件InkCanvas
所以你可以添加一個處理它。 EditingMode
也是一個公共屬性,您也可以在InkCanvas
的實例上設置它。 因此,要將處理程序添加到SelectionChanged
並在Ink
和Select
之間切換EditingMode
,您只需使用InkCanvas
實例的公共API即可。
基本示例:
inkCanvas.SelectionChanged += InkCanvas_SelectionChanged;
inkCanvas.EditingMode = InkCanvasEditingMode.Select;
我設法將InkCanvas類繼承到我的CustomInkCanvas類並獲取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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.