用于WPF的Telerik UI免费下载30天试用版

创建自定义工具

您可以创建您自己的自定义工具RadImageEditor很容易。你必须实现ITool界面,这将使您能够设置自己的预览,设置UI和附加到的任何事件RadImageEditor与你的工具相关的。

这允许你在你的工具中实现几乎任何你想要的行为,是一个SDK示例的亮点:自定义水印工具,其中可以使用自定义的水印工具。下一篇教程将带您完成创建一个自己需要执行的步骤。

  1. 创建您的工具。
    创建一个WatermarkTool类来实现ITool接口。该接口包含需要实现的4个属性和6个方法。

    例1:创建工具

    公共类WatermarkTool: ITool
  2. 创建命令。
    公共的IImageCommand GetCommand()方法要求您返回与该工具链接的命令。创建一个自定义命令来实现IImageCommand接口和WatermarkTool类中命令类型的字段。

    例2:创建命令

    private WatermarkCommand;公共类WatermarkCommand: IImageCommand{公共RadBitmap执行(RadBitmap源,对象上下文){WatermarkCommandContext myContext = (WatermarkCommandContext)上下文;Grid = new Grid();grid.Children。添加(新图像(){源=源。位图,拉伸=拉伸。没有});Image Image = new Image(){来源= myContext.Image。位图,拉伸=拉伸。无,透明度= myContext。不透明,};ScaleTransform = new ScaleTransform();scaleTransform。ScaleX = myContext.Scale;scaleTransform。ScaleY = myContext.Scale; RotateTransform rotateTransform = new RotateTransform(); rotateTransform.Angle = myContext.Rotation; TransformGroup transform = new TransformGroup(); transform.Children.Add(rotateTransform); transform.Children.Add(scaleTransform); image.RenderTransform = transform; image.RenderTransformOrigin = new Point(0.5, 0.5); grid.Children.Add(image); return new RadBitmap(source.Width, source.Height, grid); } }

    不要忘记在工具的构造函数中初始化命令。

  3. 创建命令上下文。
    为自定义命令创建上下文。在这种情况下,我们将考虑不透明度,旋转,比例和图像属性。

    例3:创建命令上下文

    公共类WatermarkCommandContext{公共双透明度{get;私人设置;}公共双旋转{get;私人设置;}公共双尺度{get;私人设置;}公共RadBitmap图像{获取;私人设置;}公共WatermarkCommandContext(双重不透明度,双重旋转,双重缩放,RadBitmap图像){这。不透明=不透明;这一点。Rotation = rotation; this.Scale = scale; this.Image = image; } }
    该上下文也在工具中的公共对象GetContext()方法中使用。
  4. 为工具创建UI设置。

    ToolSettingsHeader是位于Telerik.Windows.Controls.ImageEditor程序集中的内容控件。

    例4:创建自定义工具设置

    < toolSettingsHeader: toolSettingsHeader xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation“xmlns: x = "http://schemas.microsoft.com/winfx/2006/xaml“xmlns: d = "http://schemas.microsoft.com/expression/blend/2008“xmlns: mc = "http://schemas.openxmlformats.org/markup-compatibility/2006“xmlns: toolSettingsHeader = " clr-namespace: Telerik.Windows.Media.Imaging.Tools.UI;装配= Telerik.Windows.Controls。ImageEditor " xmlns: telerik = "http://schemas.telerik.com/2008/xaml/presentation" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400">         <网格。        

    例5:工具设置的交互逻辑

    公共部分类WatermarkToolSettings: toolsettingheader{公共WatermarkToolSettings() {InitializeComponent();this.opacity.Value = WatermarkTool.DefaultOpacity;this.scale.Value = WatermarkTool.DefaultScale;this. rotate . value = WatermarkTool.DefaultRotation;} / /……
  5. 实现AttachUI ()DetachUI ()ResetSettings ()方法。

    示例6:实现UI设置相关的方法

    public void AttachUI(ToolInitInfo previewInitInfo){这。curneteditor = previewInitInfo.ImageEditor;这一点。previewPanel = previewInitInfo.PreviewPanel;this. currenneteditor_scalefactorchanged += currenneteditor_scalefactorchanged;this.previewPanel.SizeChanged += currenneteditor_scalefactorchanged;this.previewPanel.Children.Add (this.watermarkImage);this.UpdateScaleFactor ();}公共无效DetachUI() {this. currnetEditor_ScaleFactorChanged -= currnetEditor_ScaleFactorChanged;this. previewpanel . sizechange -= currenneteditor_scalefactorchanged;this.previewPanel.Children.Clear (); this.currnetEditor = null; this.previewPanel = null; } public void ResetSettings() { this.isDirty = false; this.settings.opacity.Value = DefaultOpacity; this.settings.rotation.Value = DefaultRotation; this.settings.scale.Value = DefaultScale; }

    IsDirty属性用于工具的提交逻辑。确保在设置发生更改时将其设置为true,在设置重置时将其设置为false。

    完整的代码可在XAML SDK存储库中获得:自定义水印工具

另请参阅

在本文中
Baidu
map