C++ EGE-graphics.h绘图程序制作源代码

#include<bits/stdc++.h>
#include<unistd.h>
#include<graphics.h>
#include<windows.h>
#include<pthread.h>
using namespace std;
HWND self;
string name;
POINT p,l;
unsigned w,h;
PIMAGE img;
color_t clr;
//tool
int tonum(string s)
{
	int r=0;
	for(int i=0;i<s.length();++i)
	{
		if(s[i]>='0'&&s[i]<='9')
		{
			r*=10;
			r+=s[i]-48;
		}
	}
	return r;
}
//main
int main(void)
{
	initgraph(500,500);
	setcaption(string("小吴绘图").c_str());
	char cn[64];
	inputbox_getline("小吴绘图:","输入图像地址、名称:",cn,64);
	name=cn;
	char cw[10],ch[10];
	inputbox_getline("小吴绘图:","输入图像宽度:",cw,10);
	inputbox_getline("小吴绘图:","输入图像高度:",ch,10);
	w=tonum(cw);
	h=tonum(ch);
	closegraph();
	initgraph(w,h);
	setlinewidth((w/100+h/100)/2);
	setcaption(string("小吴绘图:"+name+"  按[S]保存,按[T]调试笔刷").c_str());
	setfillcolor(WHITE);
	bar(0,0,w,h);
	clr=BLACK;
	setcolor(clr);
	if(access(cn,F_OK)==0)
	{
		img=newimage(w,h);
		getimage(img,cn);
		putimage(0,0,img);
		delimage(img);
	}
	l.x=-1;
	l.y=-1;
	while(is_run())
	{
		GetCursorPos(&p);
		ScreenToClient(getHWnd(),&p);
		if(p.x>=0&&p.x<w&&p.y>=0&&p.y<h&&GetAsyncKeyState(VK_LBUTTON)&0x8000)
		{
			if(l.x==-1&&l.y==-1)
			{
				line(p.x,p.y,p.x,p.y);
			}
			else
			{
				line(l.x,l.y,p.x,p.y);
			}
			l=p;
		}
		else
		{
			l.x=-1;
			l.y=-1;
		}
		if(kbhit()&&GetForegroundWindow()==getHWnd())
		{
			char key=getch();
			switch(key)
			{
				case 's':
				{
					if(access(cn,F_OK)==0)
						system(string("erase "+name).c_str());
					img=newimage(w,h);
					getimage(img,0,0,w,h);
					saveimage(img,name.c_str());
					delimage(img);
					MessageBox(NULL,"保存成功!!!","提示",MB_OK);
					break;
				}
				case 't':
				{
					setcolor(WHITE);
					img=newimage(w,h);
					getimage(img,0,0,w,h);
					closegraph();
					initgraph(300,100);
					setcaption("调试");
					outtextxy(0,10,"调试内容:");
					outtextxy(10,40,"[1]画笔粗细");
					outtextxy(10,70,"[2]画笔颜色");
					char key2='0';
					while(!(key2=='1'||key2=='2'))
						key2=getch();
					closegraph();
					initgraph(500,500);
					setcaption("调试");
					switch(key2)
					{
						case '1':
						{
							char str[10];
							inputbox_getline("调试","输入画笔宽度",str,10);
							setlinewidth(tonum(string(str)));
							break;
						}
						case '2':
						{
							char r2[5],g[5],b[5];
							outtextxy(10,10,"输入笔刷颜色RGB(0~255):");
							inputbox_getline("调试","输入颜色R:",r2,5);
							inputbox_getline("调试","输入颜色G:",g,5);
							inputbox_getline("调试","输入颜色B:",b,5);
							clr=EGERGB(tonum(string(r2))%256,tonum(string(g))%256,tonum(string(b))%256);
						}
					}
					closegraph();
					initgraph(w,h);
					setcaption(string("小吴绘图:"+name+"  按[S]保存,按[T]调试笔刷").c_str());
					putimage(0,0,img);
					delimage(img);
					setcolor(clr);
				}
			}
		}
		Sleep(1);
	}
	MessageBox(NULL,"绘图完毕!!!","提示",MB_OK);
	return 0;
}

        本文代码使用编译器:小熊猫C++。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值