在C++上使用Win32控制台绘图?

6 c++ api console winapi

使用C++在Win 32平台的控制台窗口中绘制内容的最佳方法是什么?

我知道你可以使用符号绘制简单的艺术品,但有没有办法做一些像圆圈甚至位图这样更复杂的东西?

小智 13

#include <windows.h>
#include <iostream.h>


int main()
{
    // Get window handle to console, and device context
    HWND console_handle = GetConsoleWindow();
    HDC device_context = GetDC(console_handle);

    //Here's a 5 pixels wide RED line [from initial 0,0] to 300,300
     HPEN pen =CreatePen(PS_SOLID,5,RGB(255,0,0));
    SelectObject(device_context,pen);
    LineTo(device_context,300, 300);


    ReleaseDC(console_handle, device_context);
    cin.ignore();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)


Kri*_*oks 10

不,你不能这样做,因为Win32控制台不支持这些方法.但是,您可以使用GDI在控制台窗口上绘图.

这是通过在控制台上创建子窗口在控制台上绘制位图的一个很好的示例:http: //www.daniweb.com/code/snippet216431.html

这告诉你如何绘制线条和圆圈:http:
//www.daniweb.com/code/snippet216430.html

但这并不是真的在控制台中绘图.这有点像"控制台",但它仍然可以很好地完成.


小智 5

尽管完全没有记录,但可以创建一个控制台屏幕缓冲区,该缓冲区使用HBITMAP在控制台窗口进程和调用进程之间共享的 。一旦 DOS 应用程序切换到图形模式,NTVDM 就会采用这种方法来显示图形。

看见。