C++控制台绘图头文件实例代码 这个头文件是用来在C控制台绘图的借鉴了pygame的一些思想提供了一些函数用来绘图可以有效的避免多次绘制重复图像时屏闪等问题。函数介绍1、init(int x, int fz)初始化屏幕 将屏幕大小设定为 x 字体大小为 fz 。2、fill(concol color)用来将整个屏幕填充为一定的颜色。3、update()注意绘画完后的图像并不会立刻出现在控制台上使用这个函数来更新。4、getmousepos(pos p)获取鼠标坐标并存到 p 中5、gt(int x, int y)将控制台光标移到(x,y)的位置x,y 从1开始6、HideCursor隐藏控制台光标7、settextcolorconcol color设置文字颜色8、setbackcolorconcol color设置背景颜色9、rectint sx, int sy, int ex, int ey, concol color)以(sx, sy)为左上端点、(ex, ey)为右下端点绘制颜色为color的矩形。10、lineint sx, int sy, int ex, int ey, concol color)绘制一条从(sx, sy)到(ex, ey)的线。11、dotint x, int y, concol color)在(x,y)的位置画一个点先介绍到这里里面更多的功能、函数会在以后的文章后详细解释。示例代码我这里将头文件命名为Drawer.h如果用了别的名字保存头文件这里也要改过来。功能是从1,1到鼠标的位置画线。123456789101112131415161718192021222324#include Drawer.husingnamespacestd;Pos mp;// Mouse_Posvoidgame(){while(1){getmousepos(mp);// Get Mouse Posfill(black);// Let Screen be blackline(1, 1, mp.x, mp.y, green);// from (1, 1) to (mp.x, mp.y) draw Line// ^// |// You can change this to red, blue, white or moreupdate();// Update Screen}}intmain(){system(mode con cols102 lines52);init(50, 16);// 50x50 Screen and font size is 16game();}示例图片截屏截不到鼠标。。。头文件代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328#include windows.h#include algorithm#include cstdio#include cmath#include ctime#ifndef KEY_DOWN#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) 0x8000) ? 1:0)#endif#define clean 0x2#define box 0x4#define full 0x1usingnamespacestd;enumconcol {black 0,dark_blue 1,dark_green 2,dark_aqua 3, dark_cyan 3,dark_red 4,dark_purple 5, dark_pink 5, dark_magenta 5,dark_yellow 6,dark_white 7,gray 8,blue 9,green 10,cyan 11,red 12,purple 13, pink 13,yellow 14,white 15};structpixel {concol color;};structPos {intx, y;};structPos3d{intx, y, z ;};CONSOLE_CURSOR_INFO CursorInfo;COORD _GoToPos;HANDLEhOut GetStdHandle(STD_OUTPUT_HANDLE);HWNDhwnd GetForegroundWindow();intbackcol, textcol;pixel _LastScreen[1000][1000];pixel _NewScreen[1000][1000];int_ScreenSideLength;intPy3dx 0, Py3dy 0 ;intxzlen 2, yzlen 1 ;intfontsize 16;inlinevoidgetmousepos(Pos p) {POINT pt;GetCursorPos(pt);ScreenToClient(hwnd, pt);p.y (pt.y / fontsize 0.5);p.x (pt.x / fontsize 0.5);}inlinevoidgt(shortx,shorty) {--x;--y;_GoToPos {x * xzlen, y * yzlen};SetConsoleCursorPosition(hOut, _GoToPos);}inlinevoidHideCursor(){GetConsoleCursorInfo(hOut, CursorInfo);CursorInfo.bVisible false;SetConsoleCursorInfo(hOut, CursorInfo);}inlinevoidsettextcolor(concol textcolor) {textcol textcolor;unsignedshortwAttributes ((unsignedint)backcol 4) | (unsignedint)textcol;SetConsoleTextAttribute(hOut, wAttributes);}inlinevoidsetbackcolor(concol backcolor) {hOut GetStdHandle(STD_OUTPUT_HANDLE);backcol backcolor;unsignedshortwAttributes ((unsignedint)backcol 4) | (unsignedint)textcol;SetConsoleTextAttribute(hOut, wAttributes);}structButton {Pos mp;constchar* name;intlen, qx, px, py;voidrename(constchar* ne) {name ne;len strlen(ne);}voidsetpos(intx,inty) {py y;qx (x - len / 2);px (x len / 2);gt(qx, y);printf(name);}boolcheck() {getmousepos(mp);if(mp.x px and mp.x qx and mp.y py and mp.y py - 2) {gt(qx - 2, py);printf();gt(px, py);printf();if(KEY_DOWN(MOUSE_MOVED))returntrue;}else{gt(qx - 2, py);printf( );gt(px, py);printf( );}returnfalse;}};inlinevoidinit(intx,intfz) {fontsize fz;GetConsoleCursorInfo(hOut, CursorInfo);CursorInfo.bVisible false;SetConsoleCursorInfo(hOut, CursorInfo);_ScreenSideLength x;}inlinevoidupdate() {for(inti 1; i _ScreenSideLength ; i) {for(intj 1; j _ScreenSideLength ; j) {if(_LastScreen[j][i].color ! _NewScreen[j][i].color) {gt(j, i);setbackcolor(_NewScreen[j][i].color);for(inti1;iyzlen;i){for(intj1;jxzlen;j)putchar( );puts(\n);}_LastScreen[j][i] _NewScreen[j][i];}}}}voidfill(concol color) {for(inti 1; i _ScreenSideLength; i) {for(intj 1; j _ScreenSideLength; j) {if(_NewScreen[j][i].color ! color) {_NewScreen[j][i].color color;}}}}voidrect(intsx,intsy,intex,intey, concol color) {if(ey sy) swap(ey, sy);if(ex sx) swap(ex, sx);for(inti sy; i ey; i) {for(intj sx; j ex; j) {_NewScreen[j][i].color color;}}}voidChangePy(intx,inty){Py3dx x;Py3dy y;}inlinevoiddot(intx,inty, concol color) {_NewScreen[x][y].color color;}inlinevoidline(intsx,intsy,intex,intey, concol color){intxlen ex - sx ;intylen ey - sy ;intlen sqrt(pow(xlen, 2) pow(ylen, 2)) ;for(doublei0; ilen; i 1){intx xlen * i / len ;inty ylen * i / len ;_NewScreen[x sx][y sy].color color ;}}inlinePos pos3t2(Pos3d pos){if(pos.z 0){returnPos {pos.x, pos.y} ;}returnPos{pos.x / (log10(pos.z)) Py3dx, pos.y / (log10(pos.z)) Py3dy} ;}inlinevoidline3d(Pos3d a, Pos3d b, concol color){Pos a2 pos3t2(a);Pos b2 pos3t2(b);// line(a2.x, b2.y, a2.y, b2.x, color);line(a2.x, a2.y, b2.x, b2.y, color);}inlineintdis3d(Pos3d a, Pos3d b){intx abs(a.x - b.x);inty abs(a.y - b.y);intz abs(a.z - b.z);returnsqrt(pow(x, 2) pow(y, 2) pow(z, 2)) ;}/*Q------W\ /A--S*/inlinevoidrect3d(Pos3d q, Pos3d w, Pos3d a, Pos3d s, concol color){intqlen dis3d(q, a);intplen dis3d(w, s);intlen max(qlen, plen);for(doublei1;ilen; i0.1){Pos3d qpos Pos3d {abs(q.x-a.x)*i/len q.x,abs(q.y-a.y)*i/len q.y,abs(q.z-a.z)*i/len q.z} ;Pos3d ppos Pos3d {abs(w.x-s.x)*i/len w.x,abs(w.y-s.y)*i/len w.y,abs(w.z-s.z)*i/len w.z} ;line3d(qpos, ppos, color);}}structcube{Pos3d pos ;intxlen, ylen, zlen ;voidinit(intxp,intyp,intzp,intxl,intyl,intzl){pos Pos3d {xp - Py3dx, yp - Py3dy, zp};xlen xl;ylen yl;zlen zl;}inlinePos3d getdotpos(intdoti){switch(doti){case8:returnPos3d {pos.x xlen, pos.y ylen, pos.z zlen} ;case7:returnPos3d {pos.x, pos.y ylen, pos.z zlen} ;case6:returnPos3d {pos.x xlen, pos.y, pos.z zlen} ;case4:returnPos3d {pos.x xlen, pos.y ylen, pos.z} ;case5:returnPos3d {pos.x, pos.y, pos.z zlen} ;case3:returnPos3d {pos.x, pos.y ylen, pos.z} ;case2:returnPos3d {pos.x xlen, pos.y, pos.z} ;case1:returnPos3d {pos.x, pos.y, pos.z} ;}return{0, 0, 0};//Else}/*5----------6/| /|/ | / |/ | / |1----------2 || 7------|---8ylen| / | /| / | /zlen|/ xlen |/3----------4^|O*/inlinevoiddraw(concol color,intmode){if(mode full){rect3d(getdotpos(5), getdotpos(7), getdotpos(6), getdotpos(8), green);rect3d(getdotpos(1), getdotpos(3), getdotpos(5), getdotpos(7), red);rect3d(getdotpos(5), getdotpos(1), getdotpos(6), getdotpos(2), blue);rect3d(getdotpos(7), getdotpos(3), getdotpos(8), getdotpos(4), pink);rect3d(getdotpos(2), getdotpos(4), getdotpos(6), getdotpos(8), yellow);rect3d(getdotpos(1), getdotpos(3), getdotpos(2), getdotpos(4), white);}if(mode clean){line3d(getdotpos(1), getdotpos(2), color) ;line3d(getdotpos(1), getdotpos(3), color) ;line3d(getdotpos(1), getdotpos(5), color) ;line3d(getdotpos(2), getdotpos(6), color) ;line3d(getdotpos(2), getdotpos(4), color) ;line3d(getdotpos(3), getdotpos(4), color) ;line3d(getdotpos(3), getdotpos(7), color) ;line3d(getdotpos(4), getdotpos(8), color) ;line3d(getdotpos(5), getdotpos(6), color) ;line3d(getdotpos(5), getdotpos(7), color) ;line3d(getdotpos(6), getdotpos(8), color) ;line3d(getdotpos(7), getdotpos(8), color) ;}if(mode box){line3d(getdotpos(1), getdotpos(4), color) ;line3d(getdotpos(1), getdotpos(7), color) ;line3d(getdotpos(2), getdotpos(3), color) ;line3d(getdotpos(2), getdotpos(8), color) ;line3d(getdotpos(3), getdotpos(5), color) ;line3d(getdotpos(3), getdotpos(8), color) ;line3d(getdotpos(4), getdotpos(7), color) ;line3d(getdotpos(4), getdotpos(6), color) ;line3d(getdotpos(5), getdotpos(2), color) ;line3d(getdotpos(5), getdotpos(8), color) ;line3d(getdotpos(6), getdotpos(1), color) ;line3d(getdotpos(6), getdotpos(7), color) ;}}};总结到此这篇关于C控制台绘图头文件的文章就介绍到这了,