easyx写简单的画板

#include<iostream>
#include<conio.h>
#include<graphics.h>
#include<string.h>
#define PINK 0xEF88BE//用十六进制定义粉色
using namespace std;
int main()
{
	initgraph(800, 600);
	setbkcolor(WHITE);
	cleardevice();
	setlinecolor(BLACK);//画笔初始颜色为黑色
	int pensize=1;//设置笔刷大小,初始为1
	ExMessage msg;
	setlinestyle(PS_SOLID, pensize);//设置线为直线,以及设置尺寸,每一段微小直线会形成曲线
	while (1)
	{
		char a;
		if (_kbhit())//判断是否有键盘输入
		{
			a = _getch();
			if (a == 27)//如果按下Esc键退出程序
				break;
			else if (strcmp(&a, "q") == 1 && pensize < 25)
			{
				pensize++;
				setlinestyle(PS_SOLID, pensize);
			}
			else if (strcmp(&a, "e") == 1 && pensize > 1)//按q或e改笔大小
			{
				pensize--;
				setlinestyle(PS_SOLID, pensize);
			}
			else if (strcmp(&a, "d") == 1)//换色
			{
				if (getlinecolor() == BLACK)
					setlinecolor(WHITE);
				else if (getlinecolor() == WHITE)
					setlinecolor(PINK);
				else if (getlinecolor() == PINK)
					setlinecolor(RED);
				else if (getlinecolor() == RED)
					setlinecolor(BLACK);
			}
			else if (strcmp(&a, "a") == 1)
			{
				if (getlinecolor() == BLACK)
					setlinecolor(RED);
				else if (getlinecolor() == WHITE)
					setlinecolor(BLACK);
				else if (getlinecolor() == PINK)
					setlinecolor(WHITE);
				else if (getlinecolor() == RED)
					setlinecolor(PINK);
			}
		}
		else if (MouseHit())//判断是否在使用鼠标
		{
			msg = getmessage(EX_MOUSE);//若是则获取鼠标信息
			int x = msg.x, y = msg.y;//并设置使用鼠标时的点为起始点(也可防止上一次鼠标抬起后,起始点留在抬起处导致下一次画线起点和此处形成直线)
			if (msg.message == WM_LBUTTONDOWN)//如果用了鼠标左键则开始循环画线
			{
				while (1)
				{
					msg = getmessage(EX_MOUSE);//重新获取信息,更新信息,让message为WM_MOUSEMOVE,使下条if正常进行
					if (x >= 0 && y >= 0 && msg.message == WM_MOUSEMOVE)
					line(x, y, msg.x, msg.y);//开始画线
					x = msg.x, y = msg.y;//每过一小段就更新起点到当前位置
					if (msg.message == WM_LBUTTONUP)//如果左键抬起则退出循环停止画线
						break;
				}
			}
		}
	}
	closegraph();
	return 0;
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值