我创建了一个方法来创建一个六边形的多边形并将其作为对象检索,但我不知道如何使用所述对象。代码如下:
public object Hexagon()
{
float h;
float r;
int x = 20;
int y = 20;
int s = 10;
h = HexOperations.ConvertToFloat(HexOperations.Calc(s));
r = HexOperations.ConvertToFloat(HexOperations.Calc(s));
Point[] vert= new Point[6];
vert[0] = new Point(x, y);
vert[1] = new Point(x + s, y);
vert[2] = new Point(x + s + h, y + r);
vert[3] = new Point(x + s, y + r + r);
vert[4] = new Point(x, y + r + r);
vert[5] = new Point(x - h, y + r);
Polygon pol = new Polygon();
System.Windows.Media.PointCollection pointC = new System.Windows.Media.PointCollection();
pointC.Add(vert[0]);
pointC.Add(vert[1]);
pointC.Add(vert[2]);
pointC.Add(vert[3]);
pointC.Add(vert[4]);
pointC.Add(vert[5]);
pol.Points = pointC;
pol.Stroke = Brushes.Black;
return pol;
}
如果我在返回之前添加'MainGrid.Children.Add(pol)',我可以看到Grid'MainGrid'上打印的六边形,但我只是不知道如何在所述方法之外使用它。我试过这个:
MainGrid.Children.Add(Hexagon());
这给了我错误“无法从'对象'转换为System.Window.UIElement”。
也尝试过:
Polygon poly = new Hexagon();
其中说“新表达式需要()。[],{},;,在类型”。
之后和
Hexagon poly = new Hexagon();
这显然给了我一个指头。我只是不知道还有什么可以尝试。可能是因为我用我的方法犯了一个基本的错误,但是,无论如何,提前谢谢你。
答案 0 :(得分:3)
您的方法被声明为返回object
- 但您知道它' sa Polygon
,因此假设您希望调用者依赖它返回{{1} (这似乎是合理的)你应该改变返回类型。
Polygon
您还需要调用方法,而不是尝试将其用作public Polygon Hexagon()
的类型名称,或者直接传递它:
new
我还建议:
Polygon polygon = Hexagon();
// Use polygon here
答案 1 :(得分:1)
为什么不能使用显式转换将Object
转换为所需类型?
Polygon objPolygon =(Polygon)Hexagon();
我认为这将解决您的问题。您可以参考更多有关转化和投射here的信息。