0

这是我认为应该在 C# 中构建散点图的方式(在相当高的抽象级别上)。

  1. 创建空白图像
  2. 使用 TextRenderer 绘制轴标签和刻度(水平不会那么简单,但仍然可以管理)。
  3. 画一些线作为轴上的刻度线和轴本身的线
  4. 根据某些数据集中列出的点画一些圆圈(不是 100% 的方法,但不能太难)。
  5. 在图片框中显示图像。
  6. 创建一个将在 MouseHover 上调用的函数,该函数将在工具提示中显示有关该点的一些详细信息。

这甚至有意义吗?我是否在工作中使用了错误的控件?.NET 中是否有一些代码已经可以完成大部分工作(图表类似乎只适用于条形图)?有没有办法从 C# 访问 excel 的绘图功能?

对我来说,所有这一切似乎都是做作的,我希望能提供有关如何更好地设计散点图类的意见。

4

2 回答 2

2

Microsoft 图表控件库可以做的不仅仅是条形图。它包含在 .NET 4 框架中,但也可作为.NET 3.5 SP1的单独下载获得。示例可在此处获得,并演示了大多数主要功能。

于 2012-04-16T06:36:46.540 回答
1

不,这确实有道理。我真的不知道“专业人士”是如何做到的,但是当你需要一个快速的散点图时,你会怎么做。需要记住的一些事项:

  • 您希望 Draw() 方法位于顶部并获取数据点的转换坐标。这是因为您最终会想要缩放和平移。从 3D 图形编程中获取一页并仅使用显式转换矩阵(XNA 中有一些)可能会为您节省很多麻烦。
  • 您可能希望有一个通用的“绘制点”函数,它调用专门的子例程来绘制单个点,因此您可以轻松地在不同类型的点(十字、圆形、圆点、正方形、菱形等)之间切换。还有颜色。
  • 您打算如何处理大量数据点?根据我的经验,这很快就会使一个考虑不周的 Chart API 陷入停顿。
于 2012-04-16T02:47:19.093 回答