画格子
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 }