代码拉取完成,页面将自动刷新
#include "draw.h"
#include "draw_char.h"
#include"draw_bmp.h"
/*
设置控制台的背景色,及字符颜色
bak_color:背景色 取值区间[0x0,0xf]
for_color:字符颜色 取值区间[0x0,0xf]
*/
void set_con_color(int bak_color,int for_color)
{
char cmd_str[10];
if(bak_color>0xf)
bak_color=0xf;
if(for_color>0xf)
for_color=0xf;
sprintf(cmd_str,"color %x%x",bak_color,for_color);
system(cmd_str);
}
/*
初始化窗口属性 windows标准api接口 但是我用的还有问题 不过算了 不影响效果
*/
void console_init(HANDLE * handle_out, CONSOLE_SCREEN_BUFFER_INFO * screen_info,COORD pos,int fore_color,int back_color)
{
COORD size = {MAX_X, MAX_Y}; //定义一个坐标结构体
COORD posShadow={0,0};
* handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄
SetConsoleTitle("shell"); //设置窗口标题为“控制台窗口操作”
SetConsoleScreenBufferSize(*handle_out, size); // 重新设置缓冲区大小
SMALL_RECT rc = {0, 0, MAX_X, MAX_Y}; // 重置窗口位置和大小
SetConsoleWindowInfo(*handle_out, 1, &rc);
SetConsoleTextAttribute(*handle_out, back_color);
SetConsoleTextAttribute(*handle_out, fore_color);
GetConsoleScreenBufferInfo(*handle_out, screen_info); //获取窗口信息
set_con_color(0x2,0xf);
system("title gaojielinuxer");
}
/*
显示一个矩形阴影区
posShadow: 矩形的起点坐标
shadow : 阴影的颜色值
*/
void shadow_show( HANDLE handle_out,COORD posShadow,int width,int height ,WORD shadow)
{
int i;
char buf[128];
for (i=0; i<height; ++i) //先输出阴影框
{
FillConsoleOutputAttribute(handle_out, shadow, width, posShadow, buf);
posShadow.Y++;
}
}
/*
对存储在显存数组framebuffer[][]里的数据进行显示,clean_flag为1,则会清空显存数组
目前开启宏DIRECT_SHOW,直接显示能加速显示,故show_fb(.....)没用到
*/
void show_fb(HANDLE handle_out,int clean_flag)
{
int x,y;
COORD pos_pen;
system("cls");
for(y=0;y<MAX_Y;y++)
for(x=0;x<MAX_X;x++)
{
pos_pen.X=x;
pos_pen.Y=y;
WriteConsoleOutputCharacter(handle_out,&framebuffer[x][y], 1, pos_pen, NULL); //输出字符串
}
if(clean_flag==1)
{
for(y=0;y<MAX_Y;y++)
for(x=0;x<MAX_X;x++)
framebuffer[x][y]=' ';
}
}
/*
清空屏幕显示,但不会请显存数组
*/
void clean_fb()
{
system("cls");
}
/*
程序入口函数,有些demo绘制参考
*/
int main(int argc,char *argv[])
{
HANDLE handle_out; //定义一个句柄
COORD pos = {0, 0}; //定义一个坐标结构体
CONSOLE_SCREEN_BUFFER_INFO screen_info; //定义窗口缓冲区信息结构体
console_init( &handle_out,&screen_info,pos , FORE_RED,BACK_YELLOW);
COORD pos1 = {10,10};
COORD pos2 = {30,25};
COORD pos3 = {60,10};
shadow_show( handle_out,pos1,20,20 ,0x10); //显示矩形阴影
_getch(); //输入一个字符继续绘图,这个字符不会显示到屏幕上
clean_fb(); //清除之前的显示
draw_line(handle_out,pos1,pos2,"a");//画线
draw_line(handle_out,pos2,pos3,"b");//画线
_getch();
clean_fb(); //清除之前的显示
draw_circle(handle_out,pos2,20,"k",0 ,20); //画字符空心圆
_getch();
draw_circle(handle_out,pos2,15,"k",1 ,20); //画字符实心圆
_getch();
clean_fb(); //清除之前的显示
draw_rect(handle_out,pos1,30,30,"a",1); //画字符矩形
_getch();
draw_rect(handle_out,pos2,30,30,"g",0); //画字符矩形
_getch();
clean_fb(); //清除之前的显示
show_char(handle_out,"高","a" ,pos1);//绘字符汉字
show_char(handle_out,"杰","b" ,pos2);//绘字符汉字
show_char(handle_out,"林","c" ,pos3);//绘字符汉字
_getch();
clean_fb(); //清除之前的显示
draw_bmp_file("1.bmp");//绘字符单色bmp位图
_getch();
clean_fb(); //清除之前的显示
draw_bmp_file("2.bmp");//绘字符单色bmp位图
_getch();
clean_fb(); //清除之前的显示
draw_bmp_file("3.bmp");//绘字符单色bmp位图
CloseHandle(handle_out); //关闭标准输出设备句柄
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。