簡體   English   中英

WPF InkCanvas繼承了類

[英]WPF InkCanvas inherit class

我想創建一個自定義InkCanvas Adorner並找到背后的邏輯:

您可以重復使用InkCanvasEditingMode.Select模式的現有套索功能。 然后,在SelectionChanged事件中,您可以獲得對所選筆划(和/或元素)的引用。 現在清除選擇(擺脫標准裝飾)然后調出自定義裝飾。

如何在我自己的類中使用編輯模式繼承InkCanvas類並獲取對事件的訪問權限?

class myInkCanvasClass : InkCanvas ?
{
    base class constructor call ?
    ...

}

你不應該從繼承InkCanvasSelectionChanged是一個公共事件InkCanvas所以你可以添加一個處理它。 EditingMode也是一個公共屬性,您也可以在InkCanvas的實例上設置它。 因此,要將處理程序添加到SelectionChanged並在InkSelect之間切換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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM