格子涂色

左键选择颜色,右键消除颜色

//#include "stdafx.h"
#include <graphics.h>
#include <stdio.h>
#include <conio.h>

int main()
{
	int i;

	initgraph(1000, 800);								// 初始化绘图窗口

	setfillcolor(getbkcolor());							//预设填充颜色为背景色

	float H,S,L;										// 定义 HSL 颜色模型的 3 个变量
	H = 0;         	  //色相
	S= 1;			  //饱和度
	L = 0.5f;		  //亮度

	for (i = 0; i <= 1000; i = i + 50)								//划分16*8的格子填色区,格子大小为50*50,以及划分四个50*50的调色板
		line(i, 0, i, 700);
	for (i = 0; i <= 700; i = i + 50)
		line(0, i, 1000, i);
	rectangle(400, 750, 450,800);
	rectangle(450, 750, 500,800);
	rectangle(500, 750, 550,800);
	rectangle(550, 750, 600,800);

	for (i = 400; i != 600; ++i)						// 绘制调色板颜色
	{
		L += 0.000000085f;
		S -= 0.0013f;
		setlinecolor(HSLtoRGB(H, S, L));            
		line(i, 750, i, 800);                          //从左向右开始画线
		if (i % 50 == 0)							   //每50单位就换颜色
			H = H + 40;
	}

	MOUSEMSG m;											//获取鼠标信息

	while (true)
	{
		m = GetMouseMsg();

		switch (m.uMsg)
		{
		case WM_LBUTTONDOWN:
			//判断鼠标单击的位置
			if (m.x > 400 && m.x < 600 && m.y>750 && m.y < 800)
				setfillcolor(getpixel(m.x, m.y));		//获取点的颜色
			if (m.x > 0 && m.x < 1000 && m.y>0 && m.y < 700)
				floodfill(m.x, m.y,WHITE);				//填充该点所在的封闭区域
			break;
		case WM_RBUTTONDOWN:
			//鼠标右击消除颜色
				setfillcolor(getbkcolor());		//获取背景的颜色
			if (m.x > 0 && m.x < 1000 && m.y>0 && m.y < 700)
				floodfill(m.x, m.y, WHITE);				//填充该点所在的封闭区域
			break;

		}
	}

	closegraph();										//关闭绘图窗口
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值