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建立的。

需要完整源码的可以扫上面的二维码,或者点击下面的链接:

源码下载: https://gitee.com/kerndev/qrencode