# Ink Canvas Plugin SDK Ink Canvas 插件开发SDK,用于开发墨迹画布应用的插件。 **命名空间**:`InkCanvasForClass.PluginSdk`(避免与 WPF 控件 `System.Windows.Controls.InkCanvas` 在引用 `InkCanvas.*` 时产生歧义)。 ## 方案 B:轻量注册表(无 Microsoft.Extensions.DependencyInjection) 宿主在加载每个插件、调用 `Initialize` 之后,会调用 `InkCanvasPluginBase.RegisterExtensions(IPluginRegistry registry)`。插件可在此登记菜单项、工具栏按钮、设置页工厂;宿主窗口稍后统一挂载。注册表实现类型为 `InkCanvasForClass.PluginHost.CollectingPluginRegistry`,由主程序内 `PluginManager.Instance.ExtensionRegistry` 暴露。 ## 安装 ```bash dotnet add package InkCanvas.PluginSdk ``` ## 快速开始 ### 1. 创建插件项目 创建一个新的类库项目,并添加对 `InkCanvas.PluginSdk` 的引用。 ### 2. 实现插件接口 ```csharp using InkCanvas.PluginSdk; using System; using System.Windows.Controls; namespace MyPlugin { public class MyPlugin : InkCanvasPluginBase { public override string Id => "com.example.myplugin"; public override string Name => "我的插件"; public override string Description => "这是一个示例插件"; public override Version Version => new Version(1, 0, 0); public override string Author => "插件作者"; public override void Start() { // 插件启动时的逻辑 ShowNotification("插件已启动!", NotificationType.Success); } public override void Stop() { // 插件停止时的逻辑 ShowNotification("插件已停止!", NotificationType.Info); } public override UserControl GetSettingsView() { // 返回插件设置界面 return new MyPluginSettingsView(); } } } ``` ### 3. 插件功能 #### 访问主应用程序功能 通过 `Context` 属性可以访问主应用程序的各种功能: ```csharp // 获取当前画布 var canvas = Context.CurrentCanvas; // 设置墨迹颜色 Context.SetInkColor(Colors.Red); // 清除画布 Context.ClearCanvas(); // 显示通知 Context.ShowNotification("操作完成!", NotificationType.Success); ``` #### 创建菜单项 ```csharp public override IEnumerable GetMenuItems() { var menuItem = new MenuItem { Header = "我的功能", Icon = new Image { Source = MyIcon } }; menuItem.Click += (s, e) => { // 处理菜单点击 ShowNotification("菜单被点击了!"); }; return new[] { menuItem }; } ``` #### 创建工具栏按钮 ```csharp public override IEnumerable