彩票走势图

流程图控件FlowChart.NET使用教程:如何自定义组件

原创|使用教程|编辑:郝浩|2013-05-15 14:43:32.000|阅读 1785 次

概述:FlowChart.NET现在更名为MindFusion.Diagramming for WinForms,这个是一个通用的软件组件,提供了用于创建或编辑图表的直观的用户交互模型。本文将会详解如何自定义组件。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

自定义组件:

    创建自定义组件,可以源自任何内置的组件类,最终是从ComponentBase类。通常想要覆盖Draw方法,是为了渲染组件和最终的GetDesiredSize方法。下面是一个简单的自定义组件的方法:

C#

public class RectangleComponent : ComponentBase
{
    protected override void Draw(MindFusion.Drawing.IGraphics graphics, RenderOptions options)
    {
        graphics.DrawRectangle(Pens.Red, Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height);
    }
}

    上面出来的组件只会呈现红色的矩形。在FlowChart.NET中也提供了基于用户输入的自定义组件行为,覆盖了OnMouseDown、 OnMouseUp、 OnMouseMove、OnKeyDown、OnKeyUp、 OnKeyPress方法。

自定义面板:

    为了创建一个自定义的容器组件,需要从ContainerComponent派生类并覆盖ArrangeComponents方法和最终GetDesiredSize方法。从ArrangeComponents方法中,你可以安置单独的子组件,通过它们的尺寸和面板的布局逻辑,分配给它们Bounds属性值来实现。下面是一个简单的自定义面板的实例:

C#

public class OffsetPanel : ContainerComponent
{
    public override void ArrangeComponents(RectangleF availableSpace, MindFusion.Drawing.IGraphics graphics)
    {
        float y = 0;
        foreach (ComponentBase component in Components)
        {
            // Calculate the desired size of the component
            SizeF desiredSize = component.GetDesiredSize(availableSpace.Size, graphics);
            component.Bounds = new RectangleF(y, y, desiredSize.Width, desiredSize.Height);
            component.ArrangeComponents(component.Bounds, graphics);

            y += 2;
        }
    }

    public override SizeF GetDesiredSize(SizeF availableSize, MindFusion.Drawing.IGraphics graphics)
    {
        float width = 0;
        float height = 0;

        float y = 0;
        for (int i = 0; i < Components.Count; i++)
        {
            ComponentBase component = Components[i];

            SizeF desiredSize = component.GetDesiredSize(availableSize, graphics);

            width = Math.Max(width, desiredSize.Width + y);
            height = Math.Max(height, desiredSize.Height + y);

            y += 2;
        }
 return new SizeF(width, height);
    }
}

XML中使用自定义组件

    如果想要在XML中使用自定义组件,你需要提供了一个自定义ITypeResolver对象给loader。如果你想要你的组件使用快捷方式的名称,这个比较好用。如果说你没有提供一个ITypeResolver,加载这个XML就会失败。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP