为这个愚蠢的问题道歉,但我对于为程序添加图形的所有选项感到困惑。
我是一名新手C ++程序员(仅限Windows),我在Visual Studio中制作了一个处理大量数据的控制台程序。结果变得有些难以以文本形式进行审查。我想添加一些图形表示,而不是统计图表,但更像是符号表示,线条,圆圈,可视化数据的结构。我没有使用OpenGL功能,不需要数学图表,不需要菜单,复选框等。我只是想在屏幕上画一些线条。
如何从控制台文本到绘制内容?像C ++ Primer这样的书在任何类型的图形上都不包含任何单词。你了解了复制构造函数和模板,然后你想要在屏幕上绘制一个像素,突然你在一个无尽的第三方库和众神的荒野中独自留下了什么。目前还不清楚所有这些因素如何影响性能,我的纯粹数据处理程序是否会突然被一些包含大量功能的巨大框架所包围,而这些功能是我不需要的。
本网站上有关C ++书籍的主题包含一本书籍,似乎可能包含图形内容,API Design for C ++。而已。我是一个读书的人,我真的想全面研究一个问题,而不是通过论坛挖掘并处理一百种不同的,可能有偏见的意见(比如“使用MFC!” - “MFC已经死了!”)。这样的书/手册/教程是否存在?或许是“API Design for C ++”吗? (我在这里寻找类似的问题,但没有一个有好的答案;其中一个问题是建议学习C#)。
编辑:“C ++的API设计”完全是关于其他的东西,因此在本网站的C ++书籍列表上有0本关于任何类型的图形界面的书籍。
答案 0 :(得分:1)
C ++标准绝对没有定义基于像素的图形输出功能。原因是图形输出高度依赖于操作系统。每个操作系统都定义了自己的图形输出API。这意味着当你想要图形时,你就不会使用图书馆。
您可以学习您喜欢的操作系统的原生图形API(在Windows上,即WinAPI),或者您可以使用以独立于操作系统的方式抽象图形输出的库。对于2D图形,我可以推荐SFML (Simple Fast Multimedia Library)。
答案 1 :(得分:1)
Visual C ++附带了几个库,可以为所有这些库构建一个骨架示例应用程序。我建议你尝试一下。最近有关Visual C ++的书籍将帮助您调查一些可能性。
您希望的主要障碍是,对于图形输出,您必须更改程序的整个结构。它必须响应Windows消息(如WM_PAINT),并且控制台程序不面向处理消息。
答案 2 :(得分:0)
Boost库已成功引入已成为C ++标准一部分的内容,如shared_ptr
。
为什么不试试Boost Generic Image Library (GIL)。
免责声明:我只看过它,但由于它不太可能成为C ++标准的一部分(可能像C标准,“合并”),我打算尝试一下。
要获取图像呈现,我认为最简单的方法是将其保存为文件,然后调用该文件类型的默认查看器 - 甚至可以通过C ++标准执行system
功能。
答案 3 :(得分:-1)
为什么C ++中没有图形与编程语言无关,而是与垄断商业原因有关。实际上,Borland大约1992年的C ++ 3.0版本有一个graphics.h和graphics.o工具,可以准确地完成用户要求的工作。
我上面的陈述得到了证据的支持:为什么我们可以在C / C ++上打印任何我们想要的图形图像,然后再回到黑白设备?答案:ASCII字符集是在任何垄断企业阻止它之前开发的,打印机制造商发布了所需的转义序列以将像素发送到打印机。此外,IBM PC中的CGA图形是内存映射的。用户可以开发C / C ++实时图形,如Flight Simulator,Pinball Machine,Chess和Golf,而无需使用供应商库。
我们现在需要的是ISO扩展(使用转义序列)到字符编码标准,允许使用字符单元定义像素寻址。通过这种方式,图形功能可以无缝扩展到现有的面向角色的控制台系统中。这可以添加到C / C ++标准中。当然,这样的行动将打破GUI对当前操作系统供应商的潜在竞争对手的影响!实际上,操作系统供应商也必须允许用户在其本机环境中访问设备,这是我们已经看到供应商弃用的 - 应该调查一些有关Windows Vista的投诉。
因此,您的理由以及我对我们(广大公众)共同要求标准组织采取行动的建议。毕竟C / C ++及其可移植性策略应该打破由想要控制计算机语言发展议程的供应商创建的垄断据点(JAVA和PL / 1作为例子)。