将SetPixel坐标转换为控制台上的像素

时间:2014-05-01 06:51:46

标签: c++ winapi console

我在c ++工作,通常控制台的大小是25 * 80像素,但我使用setpixel()方法在控制台上显示它需要更大的坐标值,为什么它是如此以及如何转换从像素到setpixel()坐标。

这是我的setpixel()

代码
   HWND myconsole = GetConsoleWindow();
   HDC mydc = GetDC(myconsole);
   SetPixel(mydc,50,50,RGB(0,255,0));

2 个答案:

答案 0 :(得分:2)

您所指的25 * 80不是像素,而是字符。如果您希望使用SetPixel来修改控制台窗口,首先必须获得客户区的大小,这可以通过GetClientRect来完成。

以下内容将在控制台窗口的客户区域上绘制一个红色十字准线:

HWND myconsole = GetConsoleWindow();
HDC mydc = GetDC(myconsole);
RECT rect;
GetClientRect(myconsole, &rect);
for(int i = 0; i < rect.bottom - rect.top; ++i)
    SetPixel(mydc, (rect.right - rect.left) / 2, i, RGB(255, 0, 0));
for(int i = 0; i < rect.right - rect.left; ++i)
    SetPixel(mydc, i, (rect.bottom - rect.top) / 2, RGB(255, 0, 0));

请注意,控制台窗口可以(并且会在)考虑重绘时覆盖您的绘图。

答案 1 :(得分:0)

ScreenToClient提供了屏幕坐标到客户端坐标的转换。向ScreenToClient提供坐标并获取客户端坐标并绘制。