C语言在Windows控制台生成二维码
近期为了研究C语言生成二维码,实现了一个简单的工具,在windows的控制台显示二维码,效果如下:

生成二维码的代码是从网上找的;
控制台显示二维码的主要原理是改变控制台的字符背景颜色来实现。
黑块是默认颜色,白块是修改字符背景色为白色,并输出空格来实现。
由于默认字体是8*16的,所以为了保持比例正常,一个方块要输出两个空格字符。
下面是在控制台输出色块的关键代码:
//在控制台画色块
//蒋晓岗<kerndev@foxmail.com>
#include <Windows.h>
#include "paint.h"
static HANDLE m_stdout;
static CONSOLE_SCREEN_BUFFER_INFO m_csbi;
void begin_paint(void)
{
m_stdout = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(m_stdout, &m_csbi);
}
void end_paint(void)
{
SetConsoleTextAttribute(m_stdout, m_csbi.wAttributes);
}
void draw_block(int color)
{
WORD attr;
attr = color ? (BACKGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_INTENSITY) : 0;
SetConsoleTextAttribute(m_stdout, attr);
WriteConsoleA(m_stdout, " ", 2, NULL, NULL);
}
void new_line(void)
{
WriteConsoleA(m_stdout, "\r\n", 2, NULL, NULL);
}
完整源码我也上传到码云了,工程是用VS2005建立的。
需要完整源码的可以扫上面的二维码,或者点击下面的链接: