#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++。