作者chrisQQ (ChrisLiu)
看板C_Sharp
标题Re: [问题] 想要从副函式回传这样的资料
时间Sat Jan 2 00:04:10 2010
※ 引述《awd (672012)》之铭言:
: 我开了一个class的cs档
: 主要是写影像中的物件连通
: 目前是写了一个副函式
: 会计算出影像中每个长方形的四点座标(x,y)
: 我的问题是
: 如果我这副函式算出这张图有N个长方形
: 想回传每个长方形的四点座标给另一个cs档的主程式接收使用
: 要如何写这样的回传?
: 譬如副函式算出了此图有3个长方形
: 长方形1的四点座标分别是(10,13) (10,70) (20,13) (20,70)
: 长方形2的四点座标分别是(17,50) (17,62) (53,50) (53,62)
: 长方形3的四点座标分别是(0,21) (0,49) (30,21) (30,49)
: 我想要以上资讯都从此副函式输出给其他类别或主程式使用,
: 请问有比较适合c#的写法吗??(c#的结构很难跟指标结合..)
: 这问题我困扰好久
: 目前只能在此副函式中用区域变数存着,想不到怎麽丢出资讯
: 请高手提供些解法~
: 感谢~
public struct rectangleInfo
{
public Point topLeft { get; set; }
public Point topRight { get; set; }
public Point bottomLeft { get; set; }
public Point bottomRight { get; set; }
}
你的副程式 // 假装是这样
public ArrayList calculateRectangle()
{
ArrayList resultArray = new ArrayList;
rectangleInfo rInfo = null;
// 计算座标
// 建立 rInfo instance
rInfo = new rectangleInfo();
rInfo.topLeft = new Point(1,1);
rInfo.topRight = new Point(1,1);
rInfo.bottomLeft = new Point(1,1);
rInfo.bottomRight = new Point(1,1);
// 将得到的座标加进 ArrayList
resultArray.Add(rInfo);
// 加入第二个矩形资料
rInfo = new rectangleInfo();
...
...
...
// 最後回传这个 ArrayList
return resultArray;
}
// 主程式或其他要接收此资料的类别
public static void main()
{
ArrayList rectInfo = calculateRectangle();
foreach (rectangleInfo rInfo in rectInfo)
{
// 取得矩形左上角的座标 rInfo.topLeft
}
}
/*
foreach 的叙述可能有错,我每次都跟 php 搞混ˊˋ,如果错了可能就是
foreach as。
也许可以为 struct rectangleInfo 加上一个 method 来一次设定所有点的值
例如:
public void setAllPoint(Point tl, Point tr, Point bl, Point br)
{
this.topLeft = tl;
this.topRight = tr;
// ... 以此类推
}
这样似乎不用写这麽多行 XD
*/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.145.202.66
1F:→ blestadsl:如果是我~我会用List<rectangleInfo> 01/02 15:51
2F:→ chrisQQ:yes 楼上的方法比较好~ 01/02 18:53
3F:推 awd:感恩两位想法~现在试写中~ 01/02 18:55