开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 5576|回复: 4

[已解决]DiagramShape可否添加连接点

[复制链接]

0

精华

0

贡献

5

赞扬

帖子
26
软币
576
在线时间
109 小时
注册时间
2015-12-8
发表于 2015-12-11 16:51:54 | 显示全部楼层 |阅读模式
本帖最后由 yuhuimoon 于 2015-12-17 13:39 编辑

目前在使用Dev15.2.4,使用XtraDiagram接口创建DiagramShape对象,默认的链接锚点只有四个(上下左右),能否增加某侧的连接点呢?如图所示:


2015-12-11_165227.png
回复

使用道具 举报

0

精华

2987

贡献

2501

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
201
软币
13143
在线时间
2107 小时
注册时间
2013-6-22

胡吹海聊神经正常

发表于 2015-12-11 21:31:52 | 显示全部楼层
我还未测试,从官方图片来看肯定可以。

回复

使用道具 举报

0

精华

2987

贡献

2501

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
201
软币
13143
在线时间
2107 小时
注册时间
2013-6-22

胡吹海聊神经正常

发表于 2015-12-16 14:30:29 | 显示全部楼层
才安装看了一下,选择connector即可。
回复

使用道具 举报

0

精华

0

贡献

5

赞扬

帖子
26
软币
576
在线时间
109 小时
注册时间
2015-12-8
 楼主| 发表于 2015-12-16 15:37:41 | 显示全部楼层
seamone 发表于 2015-12-16 14:30
才安装看了一下,选择connector即可。

请教下,我运行官方demo,如图所示,默认创建了4个锚点,我在属性里也只能看到left、top、right、bottom四个可供筛选,没有找到自定义位置的选项。不知道你是在哪里试过的呀?Demo还是自己程序写出来的?

2015-12-16_153222.png


2015-12-16_153246.png
回复

使用道具 举报

0

精华

0

贡献

5

赞扬

帖子
26
软币
576
在线时间
109 小时
注册时间
2015-12-8
 楼主| 发表于 2015-12-17 13:39:16 | 显示全部楼层
本帖最后由 yuhuimoon 于 2015-12-17 13:43 编辑

该问题已经解决。
下面是部分代码,供大家参考:

需要先定义xaml描述文件,用于定义shape的样式,具体方法可以参考官方文档。其中,ShapePoint就是我的自定义锚点

[XML] 纯文本查看 复制代码
<p:ResourceDictionary xmlns:p="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns="clr-namespace:DevExpress.Diagram.Core.Shapes;assembly=DevExpress.Diagram.v15.2.Core">
    
    <ShapeTemplate x:Key="{ShapeKey CustomShape1}" DefaultSize="100,100" Columns="*;P0;*" Rows="*;P0;*">
        <Start X="1" Y="0" />
        <Line X="2" Y="0" />
        <Line X="2" Y="1" />
        <Line X="3" Y="1" />
        <Line X="3" Y="2" />
        <Line X="2" Y="2" />
        <Line X="2" Y="3" />
        <Line X="1" Y="3" />
        <Line X="1" Y="2" />
        <Line X="0" Y="2" />
        <Line X="0" Y="1" />
        <Line X="1" Y="1" />
        <ShapeTemplate.ConnectionPoints>
            <ShapePoint X="1.5" Y="0" />
            <ShapePoint X="3" Y="1.5" />
            <ShapePoint X="1.5" Y="3" />
            <ShapePoint X="0" Y="1.5" />
            <ShapePoint X="0" Y="0" />
            <ShapePoint X="3" Y="3" />
        </ShapeTemplate.ConnectionPoints>
        <ShapeTemplate.Parameters>
            <Parameter DefaultValue="20" 
                       Point="CreatePoint((P + W) / 2, H)" 
                       Value="2 * P.X - W" 
                       Min="100" Max="Min(W, H)" />
        </ShapeTemplate.Parameters>
    </ShapeTemplate>
</p:ResourceDictionary>


然后定义自定义shape的构建类:

[C#] 纯文本查看 复制代码
    public static class CustomShapeBuilder
    {
        static System.Windows.FrameworkElement element = null;

        public static string getCustomShapeName(string id)
        {
            return DevExpress.Diagram.Core.DiagramToolboxRegistrator.GetStencil(id).Name;
        }

        public static DiagramStencil GetCustomStencil(string id)
        {
            return DevExpress.Diagram.Core.DiagramToolboxRegistrator.GetStencil(id);
        }

        public static void RegisterCustomShapes()
        {
            if (element == null)
            {
                element = new System.Windows.FrameworkElement();
            }
            var dict = new System.Windows.ResourceDictionary();
            dict.Source = new Uri("E:\\DiagramResources.xaml", UriKind.RelativeOrAbsolute);
            DevExpress.Diagram.Core.DiagramToolboxRegistrator.RegisterShapes("CustomShapes", () => "Custom Shapes", dict, getCustomShapeName);
        }
    }



最后在需要创建的地方调用,有点需要说明,我的程序没有使用DiagramToolBox工具箱,只是获取了DiagramShape对象:

[C#] 纯文本查看 复制代码
CustomShapeBuilder.RegisterCustomShapes();
                DiagramStencil myStencil = CustomShapeBuilder.GetCustomStencil("CustomShapes");
                ShapeDescription myDescription = myStencil.GetShape("CustomShape1");
                DiagramShape _shape = new DiagramShape(myDescription, 0, 0, 100, 100, theShape.Content);


运行程序,创建出了一个Shape,一共有六个锚点(上、下、左、右、左上、右下):

2015-12-17_133857.png
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-12-23 07:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表