使用 C++ 绘制线条和像素的程序最简单的解决方案是啥? [关闭]

Posted

技术标签:

【中文标题】使用 C++ 绘制线条和像素的程序最简单的解决方案是啥? [关闭]【英文标题】:What is the simplest solution for a program to draw lines and pixels using C++? [closed]使用 C++ 绘制线条和像素的程序最简单的解决方案是什么? [关闭] 【发布时间】:2016-10-25 22:01:37 【问题描述】:

我是一名电子工程师,将设计一个渲染 2D 和更高版本的 3D 图形的硬件系统。在我可以用硬件做事情之前,我需要测试我在书中读到的算法。基本上我需要编写可以在屏幕上绘制线条和单个像素的 C++ 程序。在我编写 VHDL 以在硬件上实现相同的功能之前,我将使用它来测试所有算法。

我使用什么方法/解决方案来获得一个可以使用 C++ 绘制像素和线条的窗口?我将测试我的投影矩阵代码和 bresenham 整数线算法代码等。我不需要任何更复杂的东西,因为它会破坏目的,例如,如果程序自动遮蔽表面或自动隐藏隐藏表面,那么目的就会失败。

【问题讨论】:

当您标记 windows 和 Visual Studio 时,我建议您使用 WPF 一种点网技术,(它不是 C++)非常容易用于图形。在层的层次结构中的某些位置可能是directx。 OpenGL 和任何其他 C++ 图形是一个陡峭的学习曲线。您将没有时间进行研究,最终您将学习图形编程。 @PavanChandaka 是 WPF 更容易,例如在窗口中设置单个像素?你是对的,在 C++ 中做这件事会做很多工作,但我没有看到任何好的捷径来处理这么低级别的事情。 我会 C++ 但不会 opengl 和 directx,我只想在屏幕上绘制像素,然后刷新并再次绘制像素。 问题是在屏幕上绘制像素涉及很多开销。您需要创建一个窗口并响应 UI 消息,其中有很多。如果你已经知道该怎么做,我不希望你在这里问这个问题。 创建一个窗口,回复WM_PAINT消息,用Windows GDI functions绘制,包括SetPixelLineToRectangle等,绘制像素、线条、形状。 SetPixel 很慢,有很多优化但是我觉得这里不值得讨论。 【参考方案1】:

对于您遇到的情况,最简单的方法可能是编写一个命令行程序,生成 Netpbm 格式(PPM、PGM 或 PBM)的位图图像文件。

见:https://en.wikipedia.org/wiki/Netpbm_format

它们非常容易生成。如果找不到直接查看的程序,可以使用 ImageMagick 或类似工具将它们转换成更流行的压缩格式

【讨论】:

我明白了,我以前生成过位图文件,所以我了解文件规范。好主意。我将采取这种方法。只是为了知识,在MFC中这样方便吗? 在原始 C++ 中很方便。如果您在 Windows 上使用 MFC,那么您可以在内存中制作位图并在 OnPaint 方法中将其绘制到窗口中。见***.com/questions/4993518/…

以上是关于使用 C++ 绘制线条和像素的程序最简单的解决方案是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Bresenham Line光栅化不连接像素

如何使用 xcode 制作简单的 OpenGl C++ 程序

如何使用Bresenham创建任意厚度的线?

OpenGL:使用退化三角形绘制线

如何在开发 C++ 中绘制彩色线条

Silverlight 图形像素侧位置?