c++ - 如何在 Windows 控制台中为特定像素着色

标签 c++

我是 c++ 编程的新手,我觉得学习它很有趣也很有趣。 谁能给我一个在 Windows 控制台中为特定像素设置颜色的想法,而即使刷新或移动 Windows 控制台,颜色也会保持不变。

我在最近的代码中使用了 Setpixel()。这里有一些代码片段,假设它在函数体内:

    HWND myconsole = GetConsoleWindow();
    HDC dc = GetDC(myconsole);
    COLORREF color = RGB(255,120,120);
    for(int count =0;count<100;count++)
    {
    SetPixel(dc,0,count,color);
    }

任何想法和意见都会有很大的帮助。谢谢!

最佳答案

要么您的问题不清楚,要么您后来改变主意并决定要在 Win32 窗口而不是 Win32 控制台窗口上绘图。无论如何,这两个问题都有答案。

  1. 绘制到 Win32 窗口(不是控制台)

您可以通过多种方式绘制到 Win32 项目(包括图形 API,如 OpenGL 和 DirectX)。最简单的方法是使用 Windows GDI(图形设备接口(interface)),它只是一些函数,是 Windows.h 的一部分。

SetPixel() 将绘制到您为其提供句柄(第一个参数)的任何设备上下文。如果你想在窗口上绘图,这个句柄必须是你主窗口的设备上下文(你也可以给它一个离屏表面的句柄,比如后台缓冲区)。

因此,要获取主窗口设备上下文的句柄,请使用:GetDC(hWnd) 其中 hWnd 是主窗口的句柄。返回的设备上下文句柄可以在 SetPixel() 中用于绘制到窗口。

HDC _hWindowDC = GetDC(_hWnd);
SetPixel(_hWindowDC, _iXpos, _iYpos, _myColorRef);

如果你想像你正在尝试的那样绘制到设备上下文,你需要创建一个 Win32 项目,而不是 Win32 控制台项目。

  1. 绘制到 Win32 控制台项目

如评论中所述,对于控制台项目,您只能“绘制”字符,而不能“绘制”像素。例如,您可以选择一个屏幕坐标并像这样算出一些字符:

COORD point; 

point.X = _iX; 
point.Y = _iY; 

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), point); 
cout << "Whatever";

关于c++ - 如何在 Windows 控制台中为特定像素着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29789612/

相关文章:

c++ - 如何在C++中初始化成员的构造函数参数

c++ - 从输入流中读取没有尾随的 float "E"

c++ - 排序玩家输入

c++ - 根据类模板参数淘汰类模板构造函数

c++ - 双指针段错误

c++ - 是否使用枚举类来标记未定义的行为?

c++ - C++是否支持缓存控制指令

c++ - 这个二维数组初始化是个坏主意吗?

c++ - imread : QNativeImage: Unable to attach to shared memory segment 的 C 包装器中的 OpenCv 错误

C++读取大数据,解析,然后写入数据