我是 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 控制台窗口上绘图。无论如何,这两个问题都有答案。
- 绘制到 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 控制台项目。
- 绘制到 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/