C# 如何绘制这样的静态或动态图形?
我在这个网站上学习了很长时间,但这实际上是我第一次出现在这里,这是我的第一个问题,我是一名土木工程师,我正在编写一个挡土墙设计软件,我需要绘制如下所示的静态或动态图,(我的意思是动态的,我可以通过上下数字工具更改图形的尺寸,并且这些更改在图形上可见,),这些应该是一个现成的表单,可以帮助用户输入降级。我在哪里可以找到了解这一点的来源? 我知道我可能在编程中与最聪明的人打交道,所以请注意,编程不是我的专业,我不太好,把我当成初学者。非常感谢C# 如何绘制这样的静态或动态图形?,c#,graph,draw,C#,Graph,Draw,我在这个网站上学习了很长时间,但这实际上是我第一次出现在这里,这是我的第一个问题,我是一名土木工程师,我正在编写一个挡土墙设计软件,我需要绘制如下所示的静态或动态图,(我的意思是动态的,我可以通过上下数字工具更改图形的尺寸,并且这些更改在图形上可见,),这些应该是一个现成的表单,可以帮助用户输入降级。我在哪里可以找到了解这一点的来源? 我知道我可能在编程中与最聪明的人打交道,所以请注意,编程不是我的专业,我不太好,把我当成初学者。非常感谢 以下是向程序中添加图形所需的简单介绍: 0-决定平台:W
以下是向程序中添加图形所需的简单介绍: 0-决定平台:
Winforms
或WPF
?对于您的图形类型Winforms
可以;对于3D和动画WFP
将是更好的选择,但代价是学习曲线更陡
1-了解Winforms中的基本图形模型:
- 在控件上绘制的所有内容必须在
绘制事件中绘制或从中触发
- 当外部事件(如覆盖)发生时,Windows将负责刷新图形
- 用户应该能够通过在更改数据时使控件无效来触发绘制事件。添加一个刷新按钮,其代码为
sketchPanel.Invalidate();
面板
进行绘制,给它一个好的名称,说sketchPanel并创建它的绘制
事件(在事件属性窗格中双击它)
3-所有绘图操作都发生在Graphics
对象上。在Paint
事件中,它作为e.Graphics
提供。如果您希望绘制自己的函数,可以在Paint事件中调用公共drawMyWall(Graphics G),然后传入e.Graphics对象
4-使用的方法如下:
用于创建线绘制线
用于写入测量标签drawing string
用于绘制彩色墙或地球或水体FillPolygon
用于绘制墙的轮廓DrawPolygon
点数组
要创建它,您应该首先声明一个List wallpoints=new List();
然后添加您需要的每个点:wallpoints.add(new point(someX,someY));
这里必须遵循顺序(CW或CCW),并且必须根据每个点的输入测量值计算每个的坐标。简单的重力墙只有4个点,但更复杂的墙有十几个或更多点
当您的列表完成后,您可以在例如FillPolygon方法中使用以下方法:
e.Graphics.FillPolygon(Brushes.Orange, wallpoints.ToArray() );
由于您根据输入测量值计算所有点,因此图形将完全是动态的
首先,您可能希望省去标签等。此外,您可能希望在计算的点上添加偏移,以将图形移动到面板上大致居中的位置
我希望这能有所帮助。这里面有一个古老的问题:制造还是购买?这里面有很多工具,学习使用它们本身就是一件令人畏惧的事情。写这些东西不是一个人的事,更不用说初学者了。TaW,首先感谢你的关注和回复,那么你建议我怎么做?我该怎么做?要得到这些答案我的软件中的图形和绘图?告诉我一点你的程序到目前为止做了些什么!以及在制作任何软件时应该遵循哪些步骤,就像我听说过它应该调整的显示设置一样,我想我缺少信息,我想我需要一个指南来遵循,以便知道如何编写一个完整的和完整的e从A到Z都是有效的软件,没错,我可以声明值,使用循环,使用语句,我有一种深入思考的能力,即使使用这些基本步骤,我也能编写任何想要的目标,但问题是我正在寻找一个有组织的小指南,或者至少有一个有效的软件,谢谢你,我明白了在图像中,首先想到的是它们在细节和质量上有多大的不同。制作3D插图,隐藏线和平面检测、着色等等都是一项相当艰巨的任务。Oto,一幅像中底一样的画,只显示带有一些标签的墙壁侧面,真的没有那么难,我会带你去看hr通过或给你足够的提示让你开始……对不起,我不同意所有这一切。OP显示的图像显示类似CAD的3D图形,既没有winforms(完全无用),也没有WPF(不提供此所需的高性能3D功能)这应该是用纯硬核C++和DirectX或OpenGL来完成的。这只是因为你没有读过(所有这些)注释。从我的第一个(!)开始。如果你不能在WiFrices中这样做,那么,对不起,我可以……甚至提到C++是可笑的。“如果你不能在WiFrm中这样做”-由于缺乏硬件加速,winforms无法在最基本的绘图中不显示大量可怕的持续闪烁。更不用说了