像素绘图(用EasyX和C语言)

在2017年的时侯通过C语言和EasyX图形库编写了一个简单的像素绘图画板,当时是因为看了一个制作小游戏的视频,然后不知道干啥看到了一种像素风的图片,脑袋一热就写了一个像素绘画板。

这是EsayX的官方
这是EsayX的百度百科

话不多说,将代码分享出来:

#include<graphics.h>
#include<conio.h>
#include<stdio.h>

void gamebegin(void); //游戏开始界面
void gameplay(void);  //玩游戏具体过程
void close(void); //释放资源 

COLORREF colorArr[27]={ RGB(0,0,0),RGB(124,0,0),RGB(255,0,0),
                        RGB(0,0,124),RGB(124,0,124),RGB(255,0,124),
                        RGB(0,0,255),RGB(124,0,255),RGB(255,0,255),
                        RGB(0,124,0),RGB(124,124,0),RGB(255,124,0),
                        RGB(0,124,124),RGB(0124,124,124),RGB(255,124,124),
                        RGB(0,124,255),RGB(124,124,255),RGB(255,124,255),
                        RGB(0,255,0),RGB(124,255,0),RGB(255,255,0),
                        RGB(0,225,124),RGB(124,225,124),RGB(255,225,124),
                        RGB(0,255,255),RGB(124,255,255),RGB(255,255,255)};
void main()
{
    gamebegin();
    gameplay();
    close();
    //printf("谢谢使用!\n按任意键结束······\n\n\n\n\n\t\t\t\t\n\n");  
}
void gamebegin()//游戏开始界面
{
    initgraph(1500,800);//长宽1500*800
    setbkcolor(RGB(180,238,180));// 用背景色清空屏幕
    cleardevice();
    //绘制27色小球
    for(int y=80,i=0;y<780&&i<9;y+=80,i++)
    {
        for(int x=50,n=0;x<270&&n<3;x+=85,n++)
        {   
            COLORREF c1=colorArr[i*3+n];
            setfillcolor(c1);
            setlinestyle(BS_SOLID);
            setlinecolor(RGB(215,215,215));
            fillcircle(x,y,29);             
        }
    }
    for(y=75,i=0;y<775&&i<9;y+=80,i++)//对应26个数字
    {
        for(int x=45,n=0;x<265&&n<3;x+=85,n++)
        {
            char a[30];
            COLORREF c2=colorArr[i*3+n];
            setbkcolor(c2);
            settextcolor(RGB(50,50,80));
            settextstyle(20, 0, _T("黑体"));
            sprintf(a,"%d",i*3+n);
            outtextxy(x, y, a);
        }
    }
    //绘制清空按钮
    setlinecolor(RGB(0,200,200));
    setlinestyle(BS_SOLID,5);
    rectangle(265,80,305,720);
    rectangle(265,290,305,510);
    settextcolor(RGB(0,0,0));
    settextstyle(30, 0, _T("楷体"));
    setbkcolor(RGB(180,238,180));
    outtextxy(270,150,"保");
    outtextxy(270,190,"存");

    outtextxy(270,335,"点");
    outtextxy(270,370,"击");
    outtextxy(270,405,"清");
    outtextxy(270,440,"屏");

    //绘制网格
    setlinecolor(RGB(200,200,200));
    setlinestyle(BS_SOLID,10);
    rectangle(325,5,1495,795);
    setlinecolor(RGB(150,150,150));
    setlinestyle(BS_SOLID);
    for(int x=335;x<1490;x+=10)
        for(int y=15;y<790;y+=10)
            rectangle(x+5,y+5,x-5,y-5);
}

void close()//释放资源
{

    getch();
    closegraph();
    return;
}

void gameplay()//玩游戏具体过程
{
    COLORREF c3;
    while(true)//对网格上色操作
    {   
        while(MouseHit())
        {
            MOUSEMSG m=GetMouseMsg();//定义鼠标信息
            switch(m.uMsg)
            {
            case WM_MOUSEMOVE://鼠标移动
                if(m.mkLButton)
                    {//27色圆的范围,选择颜色
                    for(int y=80,i=0;y<780&&i<9;y+=80,i++)
                    {
                        for(int x=50,n=0;x<270&&n<3;x+=85,n++)
                        {
                            if(m.x<=x+25&&m.y<=y+25&&m.x>=x-25&&m.y>=y-25)
                                c3=colorArr[i*3+n];
                                for(int x=335;x<1490;x+=10)//网格范围,涂颜色,点击左键移动涂色
                                    for(int y=15;y<790;y+=10)
                                        if(m.x<=x+4&&m.y<=y+4&&m.x>=x-4&&m.y>=y-4)
                                        {
                                            setfillcolor(c3);
                                            fillrectangle(x+5,y+5,x-5,y-5);
                                        }   
                                
                        }
                    }
                }
                if(m.mkRButton)
                {
                for(int a=335;a<1490;a+=10)
                    for(int b=15;b<790;b+=10)
                        if(m.x<=a+4&&m.y<=b+4&&m.x>=a-4&&m.y>=b-4)
                        {
                            setfillcolor(RGB(180,238,180));
                            fillrectangle(a+5,b+5,a-5,b-5);
                        }
                }
                
                break;
            case WM_LBUTTONDOWN://左键点击
            //  if(m.uMsg=WM_MOUSEMOVE||m.mkLButton)
            //  {
                {//27色圆的范围,选择颜色
                    for(int y=80,i=0;y<780&&i<9;y+=80,i++)
                    {
                        for(int x=50,n=0;x<270&&n<3;x+=85,n++)
                        {
                            if(m.x<=x+25&&m.y<=y+25&&m.x>=x-25&&m.y>=y-25)
                                c3=colorArr[i*3+n];
                                for(int x=335;x<1490;x+=10)//网格范围,涂颜色,点击涂色
                                    for(int y=15;y<790;y+=10)
                                        if(m.x<=x+4&&m.y<=y+4&&m.x>=x-4&&m.y>=y-4)
                                        {
                                            //setlinecolor(c3);
                                            setfillcolor(c3);
                                            fillrectangle(x+5,y+5,x-5,y-5);
                                        }   
                        }
                    }
                }
            //  }
                if(m.x<=303&&m.x>=267&&m.y>=82&&m.y<=288)//保存操作
                {
                    setlinecolor(RGB(0,150,200));
                    setlinestyle(BS_SOLID,5);
                    rectangle(265,80,305,290);
                    char str[200];
                    int wj=0;
                    for(wj=0;wj<100;)
                    {
                    sprintf(str,"C:\\Users\\念·墨白\\Desktop\\像素绘图\\保存\\%d.bmp",wj);
                    if(fopen(str,"r")!=NULL)
                        wj++;
                    else
                    {
                        saveimage(str);
                        break;
                    }
                    }
                    Sleep(100);
                    return ;                    
                }
                if(m.x<=303&&m.x>=267&&m.y>=292&&m.y<=508)//清空操作
                {
                    closegraph();
                    gamebegin();
                }

                break;
            case WM_RBUTTONDOWN:
                {
                for(int a=335;a<1490;a+=10)
                    for(int b=15;b<790;b+=10)
                        if(m.x<=a+4&&m.y<=b+4&&m.x>=a-4&&m.y>=b-4)
                        {
                            setfillcolor(RGB(180,238,180));
                            fillrectangle(a+5,b+5,a-5,b-5);
                        }
                }
            }   
        }
    }
}

效果图,如下:



使用说明:

鼠标左键 鼠标右键 保存 点击清屏
则色和填涂 橡皮擦 路径要在代码中定义、low爆了 应该不会变白板233

这是我画的:

这是妹妹画的:

说明:由于是2017年5月份左右,用时3天写完的,所以有许多不足的地方,性能方面,功能方面,界面美化方面等等,而且现在我也看不懂了,小纠结~~

你可能不会好奇我为什么要在2020年1月17日写下这一篇文章,时隔emmmm~我掐指算一算


巧了,我也没算出来。

其实,我是因为刚看了markdown(一种轻量级的标记语言)来试试效果。
这是一个建议:建议读到此处的朋友可以看看了解一下,也就10分钟左右就能用了,感觉用起来还是挺方便的。

这是我看markdown教程的地方
这是简书中如何使用markdown编辑文章的地方

既然神奇搜索引擎安排你搜到这条信息,并且冥冥之中有一股神奇的魔力让你点开了这篇文章,读到了此处......
那么感谢你一下,啦啦啦~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,493评论 1 11
  • 【转】FVWM简明使用指南——王垠 Fvwm is a window manager for X11. It is...
    lincooQQ阅读 2,341评论 2 1
  • 目标一:吃药 晚上又打算给她喂点红霉素,那药是真苦,用我婆婆的话就是又甜又苦,我还是不打算骗她,所以在吃药之前我就...
    小惠_a7bf阅读 138评论 0 0
  • 男生是怎么追到女神的?要么非常有诚意,有耐心,想尽一些办法女神孩欢心,最终打动女神,要么自己早早修炼成男神,迷死心...
    吴燕燕阅读 161评论 0 0
  • 人在旅途,遇到任何状况都是正常的。处变之中,有数据支撑,有效寻求帮助的预判和选择都很重要。 火车晚点对于...
    阶前赏雨阅读 366评论 1 1