上代码Point[,] pt=null;
            try
            {
                pt= new Point[dat.Tables[0].Rows.Count, 2];
                for (int i = 0; i < dat.Tables[0].Rows.Count; i++)
                {
                    DataRow[] dr = dtb.Select("ID=" + dat.Tables[0].Rows[i][0].ToString());
                    DataRow[] drp = dtb.Select("ID=" + dat.Tables[0].Rows[i][1].ToString());
                    pt[i, 0] = new Point(Convert.ToInt32(dr[0][1]));
                    pt[i, 1] = new Point(Convert.ToInt32(drp[0][1]));
                }
            }dr[0][1]是有xy的point类型,但是我不会转成point类型,有谁能够帮我一下。

解决方案 »

  1.   

    有值又是Point类型那强制转换下不就行了么pt[i, 0] = (Point)dr[0][1];
    pt[i, 1] = (Point)drp[0][1];如果没值那么就是pt[i, 0] = new Point(int.Parse(dr[0][1].ToString()), int.Parse(drp[0][1].ToString()));
      

  2.   

    没有该明白你想干什么
    Point pt = new Point(x,y);
      

  3.   


    System.Drawing.Point p = new System.Drawing.Point(1,1);                System.Data.DataTable dt = new System.Data.DataTable();
                    DataColumn dc = new DataColumn();
                    dc.ColumnName = "Point";
                    dc.DataType = typeof(System.Drawing.Point);
                    dt.Columns.Add(dc);                DataRow dr = dt.NewRow();
                    dr[0] = p;
                    dt.Rows.Add(dr);
      

  4.   

    说错了dr[0][1]不是point类型,他就是从数据集里查询出来的结果,"{x=32,y=67}"这种,但是我转point老是转不了
      

  5.   

    x=32,y=67这个好几种分解方法一种可以先用逗号分隔,再用等号分隔;另一种就是转为Char数组,然后依次判断,遇到第一个数字之前都丢掉,然后第一个数字后的第一个非数字就记录之前的数字再往后判断一直到完就拿出来这两个数字了。
      

  6.   

    Point是坐标上的点
    主要看LZ的数据是怎么存储的!
    是存的坐标还是POINT对象?
      

  7.   

    那你就一个一个转换,最后在合成point
      

  8.   

    我还想问你到底用哪种方式把Point存入数据库的啊
      

  9.   

    point.tostring()==》"{X=1,Y=2}"是不可逆的
    意思就是没有一个直接的方法将字符换"{X=1,Y=2}"转换为point
    只能通过手动方法了:
    point ToPoint(string str){
    Match mat = Regex.Match(str, @"{X=(\d+),Y=(\d+)}", RegexOptions.IgnoreCase);
    if(mat.Success) return new Point(int.Parse(mat.Groups[1].Value), int.Parse(mat.Groups[2].Value));
    else return new Point(0,0);
    }