Z填充曲线的生成..docVIP

  • 64
  • 0
  • 约 5页
  • 2017-01-01 发布于重庆
  • 举报
Z填充曲线的生成.

Z填充曲线的生成 功能操作步骤: 单击工具栏的z曲线工具,弹出对话框,输入阶数n,确定生成n阶z填充曲线。 功能实现流程: 1.添加工具项:在工具栏上添加一个类型为button的工具;然后在属性框设置text为Z曲线;设置name为z;设置Image为前面提供位置的任意图片或自己绘制一个图片。设置事件框中的单击事件click;对着click双击,弹出代码文件。 2.为事件函数添加如下代码 Graphics gra = panel1.CreateGraphics(); ZForm zform=new ZForm();//新窗体对话框 zform.ShowDialog(); int order = (int)Math.Pow(2,zform.value);//获得阶数 Rectangle rect = new Rectangle(0, 0, panel1.Width, panel1.Height);//获得要填充的窗体/面板 ListPoint_T zpts = ZFill(rect,order);//调用z曲线排序 for (int i = 0; i zpts.Count - 1; i++)//绘制z填充曲线 { gra.DrawLine(Pens.Red,new Point((int)zpts[i].X,(int)zpts[i].Y),new Point((int)zpts[i+1].X,(int)zpts[i+1].Y)); } 3.在主程序的命名空间下添加一个类,并使得该类继承From类;之后设计该新的窗体。 1)首先将窗体的text改为Z曲线—输入阶数; 2)添加一个textbox,并将其name改为ztb; 3)添加一个button,并将其text改为确定,name改为zbt,并对其添加一个单击事件。 4)事件中添加如下代码:目的是为了将文本框中的值保存已被主程序调用。 value = Convert.ToInt32(ztb.Text); this.Hide(); this.Close(); 5)假如没有构造函数,添加一个构造函数 public ZForm() { InitializeComponent(); } 6)添加一个公有字段value 4.添加算法代码 public ListPoint_T ZFill(Rectangle rect, int order)//z曲线排序 { ListPoint_T pts = new ListPoint_T(); ListPixelPosition_T zpps = new ListPixelPosition_T(); for (int i = 0; i order; i++) { for (int j = 0; j order; j++) { int[] biri = DecToBir(i);//十进制转二进制 int[] birj = DecToBir(j);//十进制转二进制 int[] birmor = MortonCode(birj, biri);//morton码 int decmor = BirToDec(birmor);//二进制转十进制 PixelPosition_T pp = new PixelPosition_T(i, j, decmor);//构建包含morton码的网格 zpps.Add(pp);//添加存储 } } CompareMorton commor = new CompareMorton(); zpps.Sort(commor); foreach (PixelPosition_T pp in zpps) {

文档评论(0)

1亿VIP精品文档

相关文档