【问题标题】:Draw a graph using arrays of pictureboxes使用图片框数组绘制图形
【发布时间】:2014-12-19 15:52:17
【问题描述】:

我目前正在编写一个程序,我需要在其中绘制一些图表。我需要在这些图中有一些特定的布局。例如,我有用户定义的天数的三个阶段。例如30天的开始阶段、40天的中间阶段和20天的结束阶段。这些阶段我希望在图表中拥有所有不同的背景颜色。我通过绘制图片框并将它们的宽度调整到舞台长度来做到这一点。此外,对于总长度中的每一天,我都想画一条垂直线,而对于图中的水平线数量,我取 y = f(x) 的最大值。

y = f(x) 需要绘制在图表上。因为我在背景上使用了许多图片框,所以我不能使用 graphics.DrawLine,因为它将在图片框后面绘制。所以我决定用一组图片框来制作这条线;)它工作得很好,但显然现在加载程序需要很多时间。

是否有另一种方法可以使用需要较少计算机操作的控件数组来绘制此图?还是我应该完全停止使用数组?

(我想在这里发布我的照片,但我还没有十个声望,因为我是一个菜鸟:()

稍后我将在此图表中添加更多行,但由于我发现我的程序已经变慢了,所以我停止编写其他行并前往无所不知的论坛!

任何帮助将不胜感激!

问候, 阿瑞

【问题讨论】:

  • 因为我在背景上使用了很多图片框,所以我不能使用 graphics.DrawLine,因为它会被绘制在图片框的后面 这没有任何意义。您可以轻松地在 PictureBoxes 上绘图!实际上你甚至不需要它们中的三个,只需绘制 3 个填充矩形!无论是Pictureboxes还是Panels,你确实需要在控件的Paint事件中学习Graphics和绘图。 !!并且不要像看起来那样在表格上画画!

标签: c# arrays graph picturebox


【解决方案1】:

常见的表单控件并不真正适合此目的。我建议您考虑使用能够为您提供更多功能并控制视觉和图形的库。

【讨论】:

  • 谢谢,我要试试这个!
【解决方案2】:

@Kári 是对的:

如果您只想保留 .NET(不依赖第三个库),您可以使用 GDI。在 .NET 中,您可以通过包含 System.Drawing.dll 作为参考来使用。

一个简单而正确的方法是:

  1. 创建一个目标控件(例如图片框)
  2. 实现 OnPaintDraw 事件,它为您提供一个 Graphics 对象 包含许多绘图方法。有关详细信息,请参阅 MSDN: MSDN -> Graphics

Graphics 的方法将始终在控件上方绘制,因此请确保您的目标控件可见,而不是位于任何其他控件之后。 如果 GDI 不够,您可以查看其他库。 (见.NET graph library around?

【讨论】:

    猜你喜欢
    • 2021-03-03
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 2015-05-24
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多