这个问题已经开启/关闭困扰我,我现在写了4个封装.我确信我做错了,需要找出我的理解分支的地方.
假设我使用Rectangle类来表示金属条.(这比动物更好)
所以说基类叫做"Bar".
private class Bar
{
internal Rectangle Area;
}
Run Code Online (Sandbox Code Playgroud)
所以.现在我们制作一个矩形,比如300个单位乘10个单位.
private Bar CreateBar()
{
Bar1 = new Bar1();
Bar1.Area = new Rectangle(new Point(0,0), new Size(300,10));
return Bar1;
}
Run Code Online (Sandbox Code Playgroud)
很棒,所以我们有一个基础吧.
现在让我们说我们想让这个酒吧有一种材料 - 比如钢铁.所以...
private class SteelBar : Bar
{
string Material;
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我这样做...
private SteelBar CreateSteelBar()
{
SteelBar SteelB = new SteelB();
Bar B = CreateBar();
SteelB = B;
SteelB.Material = "Steel";
return SteelB;
}
Run Code Online (Sandbox Code Playgroud)
从我得到的内容,如果我调用CreateSteelBar,它会创建一个调用CreateBar的钢条.所以我最终得到了一个带有300×10矩形的钢筋,以及一个用于材料的无绳或空绳.然后我将材料设置为钢.
当我在我的程序中尝试类似的东西时,它一直在告诉我不能隐含地从较低级别的类中创建更高级别的类.考虑到我所看到的动物实例的所有遗传,我想这就是继承存在的原因,但我希望有人可以让我知道.
此外,我确信我可以打电话,SteelBar = CreateBar();但我在这里做了很长的路.
REWRITE:我对这个问题没有得到太多反馈,我认为我没有正确地写它并试图澄清.
我正在制作一个让人们创建国家的计划.下图中的粗红线是所述国家的边界.我试图弄清楚如何生成一个多边形,填充"边框"线内的整个区域.我有接受多边形工作的三角测量代码 - 我用手动输入的多边形测试了 - 现在我想弄清楚如何从线/链接点生成多边形.


有关详细信息 - 所有红线都是黄点连接在一起的方式.用户将黄点拖动到一起以链接线条.多边形可能在内部有一个洞并且是开放的 - 我要做的是制作处理开放多边形的代码和在其中有孔的多边形,并生成所有黄点位置的输出(带有x和z的vector3)对于我的三角测量代码,它位于y平面上的0处).
我仍然想方设法解决这个问题,但我还没有想出去哪里开始寻找解决方案.谢谢你的帮助.
以下老问题
我试图找到一种方法将点链接在一起形成一个内部多边形.基本上,我正在创建一个程序,让人们将线路连接在一起.在形成闭合多边形之后,应该在线内生成新的多边形对象.
我不太确定如何做到这一点 - 我已经做到了这样它们可以生成线条并将它们链接在一起,但如何做一个封闭的多边形让我感到惊讶.我看着凸壳,但这是不一样的,并尝试寻找或思考一些似乎不起作用的不同的东西.我很好奇是否有人能指出我的写作方向/关于如何继续创作的教程或想法.
我上传了两张照片以帮助显示我的观点.


上面是我想要做但不太确定的方法 - 基本上,当用户完成一个闭合的多边形(所有的黄色点都是多边形的外部点)时,我希望它生成一个内部多边形(由黑色1标记, 2和3).
有没有办法让我将对象发送者更改为控制发件人?我最终想要的是对象发送者告诉我控制器数量(例如控制器15),而不是告诉我"system.project.label,text:'text here'".
我通过查看工作表上的每个控制器并将对象发送器与所述控制器匹配来解决此问题,但这是一个相当冗长的解决方法.我很好奇是否有人知道如何让发件人报告它的控制位置.
我正在尝试使用math.sin和math.cos在我的程序中做一个移动的边缘线.我得到所有的数学,它似乎正确加起来(我使用点击鼠标位置和移动鼠标变量来确定绘图区域.然后我使用宽度值给它边缘偏移.
我使用math.cos来查找偏移X和Y位置中的点的距离.在这样做时,cos(Angle)的值似乎绝对疯狂,从+1到-1.这是一个例子.
角度= 29.153788462442
按窗口计算器计算= 0.8733152733324487151754721490934
按照Math.Cos(角度)的Cos = -0.637571130025255
我尝试将Angle转换为float和int,以防小数位导致问题,无济于事.
这是我用来提出这些答案的代码.
lblInOpts.Text = Math.Cos(Angle).ToString() + " " + Angle.ToString();
Run Code Online (Sandbox Code Playgroud)
该文档以度为单位,从弧度切换,并使用与MSDN似乎建议的相同方式.