STNodeEditor icon indicating copy to clipboard operation
STNodeEditor copied to clipboard

遇到节点图连线消失问题,已解决

Open Isaac320 opened this issue 8 months ago • 0 comments

作者开发的这个节点图编辑器简直太棒了! 我把它用到了项目上,但同事在用的过程中发现有时候保存后加载发现节点图的连线消失了。 我查看了源码,发现是我把节点图页面放在一个tab页面里,一般不会去查看此页面,导致不会执行节点图的OnPaint方法, 在执行保存方法时候,发现m_dic_gp_info这个字典为空,并未将连线数据保存到文件里。

然后我在SaveCanvas方法里临时加上了判断字典m_dic_gp_info是否为空 void fix_m_dic_gp_info_is_Zero() { foreach (STNode n in this._Nodes) { foreach (STNodeOption op in n.OutputOptions) { if (op == STNodeOption.Empty) continue;

         foreach (var v in op.ConnectedOption)
         {                       
          //如果当前绘制需要重新建立已连接的路径缓存
                 GraphicsPath gp = this.CreateBezierPath(op.DotLeft + op.DotSize, op.DotTop + op.DotSize / 2,
                     v.DotLeft - 1, v.DotTop + v.DotSize / 2, this._Curvature);
                 m_dic_gp_info.Add(gp, new ConnectionInfo() { Output = op, Input = v });
         }
     }
 }

} 重新将字典填满,来保存此连线图,临时解决这个问题。 有没有更好的方式解决我遇到的这种问题,可以指导一下

Isaac320 avatar May 23 '25 08:05 Isaac320