1 /*写一个“格子涂色”的游戏,要求:屏幕上有 16x8 的格子,屏幕底部有类似画
2 笔中的选色区(随便放上一些常用的颜色),鼠标点击选择区的颜色后,就作为
3 当前颜色,然后再点屏幕上的格子,就可以用刚才的颜色填涂相应格子*/
4 // 鼠标画三角形.cpp : Defines the entry point for the console application.
5
6
7 #include <graphics.h>
8 #include <stdio.h>
9 #include "conio.h"
10
11 void main()
12 {
13 int i;
14
15 initgraph(800, 500); // 初始化绘图窗口
16
17 setfillcolor(getbkcolor()); //预设填充颜色为背景色
18
19 float H, S, L; // 定义 HSL 颜色模型的 3 个变量
20 H = 0;
21 S = 1;
22 L = 0.5f;
23
24 for(i=0;i<=800;i=i+50) //划分16*8的格子填色区,格子大小为50*50,以及划分四个50*50的调色板
25 line(i,0,i,400);
26 for(i=0;i<=400;i=i+50)
27 line(0,i,800,i);
28 rectangle(350,450,400,500);
29 rectangle(400,450,450,500);
30 rectangle(300,450,350,500);
31 rectangle(450,450,500,500);
32
33 for( i = 300; i !=500 ; ++i) // 绘制调色板颜色
34 {
35 L += 0.000000085f;
36 S -= 0.0013f;
37 setlinecolor(HSLtoRGB(H, S, L));
38 line(i, 450,i, 500);
39 if(i%50==0)
40 H=H+20;
41 }
42
43 MOUSEMSG m; //获取鼠标信息
44
45 while(true)
46 {
47 m=GetMouseMsg();
48
49 switch (m.uMsg)
50 {
51 case WM_LBUTTONDOWN:
52 //判断鼠标单击的位置
53 if(m.x>300 && m.x<500 && m.y>450 && m.y<500)
54 setfillcolor(getpixel(m.x,m.y)); //获取点的颜色
55 if(m.x>0 && m.x<800 && m.y>0 && m.y<400)
56 floodfill(m.x,m.y,WHITE); //填充该点所在的封闭区域
57 break;
58 }
59 }
60
61 closegraph(); //关闭绘图窗口
62 }