在阅读了我在这里和谷歌中找到的几乎所有内容之后,我还没有找到关于在 Visual Studio 2008 中用 C++(控制台应用程序 win32,黑色的)绘制 x-y 值的简单直接的解决方案/示例。基于 ,我应该使用 MsChart 控件,有人愿意分享一个简单的例子吗?
,以及许多其他人,谈论不属于 Visual Studio 的库(因此它们不会与 EXE 一起编译,因此它不会作为结果 EXE 的一部分包含在内)或显示图形与Excel。我只想得到一个简单的x-y图形(以及穿过这些点的线),根本不担心它是否是全世界最丑陋和最简单的图形,但它必须在我的代码运行后自动出现(也许在一个新窗口中)或者也许在控制台内?)并且如果我在距离我的电脑数千公里的另一台电脑上运行此 EXE,则在代码运行后图形仍然会出现。
我问的东西太复杂了吗?无聊的??我希望我能得到一些答案/示例/解决方案,而不是这篇文章被关闭 =) 提前致谢!
@Koushik 再次感谢您的支持!即使我了解了整个情况,我也需要一个清晰的例子才能正确理解,所以为了投票,我想测试这个简单的例子:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double f(const double &x) {
return (
sin(x)*exp(-x));
}
int main()
{
unsigned Nplot = 100;
double x_low = 0.0;
double x_high = 20.0;
double h = (x_high - x_low)/(double)Nplot;
for (unsigned i=0;i<=Nplot;i++)
{
double x = x_low + i*h;
cout << setw(20) << x <<
setw(20) << f(x) << endl;
}
system("pause>nul");
return 0;
}
这是生成 sin(x) 函数的非常基本的代码。如果您将其复制/粘贴到 VC++ 2008 中的控制台应用程序 Win32 中(新项目/Visual C++/Win32/控制台应用程序 Win32/空项目/),数据将出现在屏幕中:
然后,将这些值放入 Excel 中会得到:
我想要这个,但是输出窗口应该在值出现在控制台中之后出现,更重要的是,代码不能依赖于 excel 或 Visual C++ 外部的其他东西。因此,编写一些额外的代码来绘制这条线,并在编译后,两者都必须在任何计算机中出现/工作,特别是在没有 VS 或任何库的计算机中,只需在 Windows 中运行 EXE,仅此而已。那么,有可能吗?您能分享一个简单的代码示例来绘制这条线(将其添加到上面的代码中)吗?谢谢!
您可以使用 system("appname"); 调用 gui 应用程序或更确切地说任何其他应用程序。包含 stdlib.h 标头。您可以做的是创建控制台应用程序并准备数据。将这些数据存储在文件中,打开可以从文件中读取数据并绘制数据的应用程序。
如果您的目标只是绘制数据,那么 GUI 应用程序编写起来也不会那么困难。在控制台中您真的无法绘制东西。在turbo c++中我们有这个选项,因为它主要是为dos创建的。
算法: 1) 准备数据,即沿 x 轴的时间和沿 y 轴的幅度。使用您自己的格式将其存储在文件中。例如:x-ais 数据 y 轴数据。
2).准备一个可以绘制图形的GUI应用程序。使用表单的 CreateGraphics() 方法来绘制线条,即轴和数据线。 CreateGraphics::drawLine() 和 CreateGraphics::drawLines() 应该有助于您的进步。
编辑: 您可以将命令行参数传递给 GUI 应用程序。这个参数可以是数据文件路径
对于控制台应用程序来说,最简单的事情是在计算数据后,在屏幕上创建一个窗口(是的,控制台应用程序允许使用 GUI),然后使用
WM_PAINT
/BeginPaint
/ 处理
PolyLine
/ EndPaint
,使用一些适当的缩放,使数据 (1) 正面朝上并 (2) 适合窗口。
您不会有任何网格线或轴标签,只有绘制的线,但这是最低限度,并且可以轻松完成,无需使用或重新创建整个图形库。
有关如何向程序添加 GUI 的示例,请尝试 Raymond Chen 的暂存程序,C++ 版本。创建一个窗口需要相当多的代码,但幸运的是,您唯一需要更改的是
PaintContent()
函数。
使用
Polyline
几乎如您所要求的一样简单——它接受一组数据点。
如果您确实想添加网格线和标签,更多的
Polyline
调用和 ExtTextOut
函数就可以解决问题,但很快您就会需要 CreatePen
和 SelectObject
来控制线条颜色和样式(点、虚线等)。并注意顺序——先画底部的东西,以便后面的调用可以覆盖顶部。
另一方面,如果不需要单个可执行文件,我建议您提供 Gnuplot 的副本(
pgnuplot
可执行文件是为从另一个程序调用而设计的)。首先使用 wgnuplot
调整绘图选项,然后将它们与数据一起传递到 pgnuplot
。通过这种方式,您将免费获得合理的缩放、网格线和标签,并将结果导出为常见格式,例如 PNG。