c语言基于easyx图形库绘制哆啦A梦

一、代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<easyx.h>
#include<stdio.h>
#include<Windows.h>
#define PI 3.14

int main()
{
    initgraph(480, 480);
    setbkcolor(WHITE);
    cleardevice();
    setlinecolor(BLACK);
    setlinestyle(PS_SOLID, 7);

    //脸蓝色部分
    setfillcolor(BLUE);
    fillellipse(50, 50, 430, 430);//ellipse是椭圆
    Sleep(1000);

    //脸白色部分
    setfillcolor(WHITE);
    fillellipse(80,110, 400, 430);//ellipse是椭圆
    Sleep(1000);

    //左眼睛部分
    setfillcolor(WHITE);
    fillellipse(160,70 , 240, 180);//ellipse是椭圆
    Sleep(1000);

    //右眼睛部分
    setfillcolor(WHITE);
    fillellipse(240, 70, 320, 180);//ellipse是椭圆
    Sleep(1000);

    //左眼睛瞳孔部分
    setfillcolor(BLACK);
    solidcircle(210, 140 ,10);//circle是圆
    Sleep(1000);

    //右眼睛瞳孔部分
    setfillcolor(BLACK);
    solidcircle(270, 140, 10);//circle是圆
    Sleep(1000);

    //右眼睛瞳孔部分
    setfillcolor(WHITE);
    solidcircle(210, 140, 4);//circle是圆
    Sleep(1000);

    //右眼睛瞳孔部分
    setfillcolor(WHITE);
    solidcircle(270, 140, 4);//circle是圆
    Sleep(1000);

    //鼻子部分
    setfillcolor(RED);
    solidcircle(240, 185, 20);//circle是圆
    Sleep(1000);

    //竖线
    line(240, 205, 240 ,370);
    Sleep(1000);

    //嘴巴
    arc(160,235,320,370,PI,2*PI);//椭圆弧
    Sleep(1000);

    //胡子
    //右边最上面胡子
    line(360, 185 ,440,160);
    //左边最上面胡子
    line(120, 185, 40, 160);

    //右边中间胡子
    line(370, 210, 450, 200);
    //左边中间胡子
    line(110, 210, 30, 200);

    //右边下面胡子
    line(370, 240, 440, 270);
    //左边下面胡子
    line(110, 240, 40, 270);
    Sleep(1000);

    getchar();
    closegraph;
    return 0;
}

二、运行效果

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这是一个关于用 EasyX绘制多边形并保存到文件的问题,我会尽力回答。 首先,我们需要了解 EasyX 库,它是一款基于 C++ 的图形库,可以方便地绘制图形、处理鼠标、键盘事件等。在这里,我们可以使用 EasyX 库来完成多边形的绘制和保存。 针对您的问题,我们可以按以下步骤来实现: 1. 定义多边形结构体 我们可以定义一个结构体,用来存储多边形的信息,包括多边形的顶点数、顶点坐标等。这里我们可以使用动态数组来存储顶点坐标。 ```c++ struct Polygon { int vertexNum; //顶点数 POINT* vertexList; //顶点坐标列表 }; ``` 2. 绘制多边形 在绘制多边形时,我们可以使用鼠标左键点击来添加多边形的顶点,同时在界面上显示出当前多边形的坐标路径。在鼠标右键点击时,绘制结束。 ```c++ Polygon polygon; //定义多边形结构体 bool isDrawing = true; //是否正在绘制 bool isFilled = false; //是否已填充 //鼠标事件处理函数 void OnMouseEvent(int button, int x, int y) { if (button == MOUSEEVENTF_LEFTDOWN && isDrawing) { //添加多边形顶点 polygon.vertexList[polygon.vertexNum].x = x; polygon.vertexList[polygon.vertexNum].y = y; polygon.vertexNum++; //显示当前多边形的坐标路径 char str[20]; sprintf_s(str, "(%d, %d)", x, y); outtextxy(x, y, str); } else if (button == MOUSEEVENTF_RIGHTDOWN && isDrawing) { //绘制结束 isDrawing = false; //填充多边形内部 setfillcolor(YELLOW); fillpolygon(polygon.vertexList, polygon.vertexNum); //保存多边形坐标到文件 saveToFile("polygon.txt", polygon); } } ``` 3. 保存多边形坐标到文件 在绘制结束后,我们将多边形的坐标信息保存到文件中,以便后续读取。我们可以使用文件流来实现。 ```c++ void saveToFile(const char* fileName, Polygon& polygon) { ofstream fout(fileName); fout << polygon.vertexNum << endl; for (int i = 0; i < polygon.vertexNum; i++) { fout << polygon.vertexList[i].x << " " << polygon.vertexList[i].y << endl; } fout.close(); } ``` 4. 读取多边形坐标信息 在需要重新显示多边形时,我们可以从文件中读取多边形的坐标信息,并将其绘制出来。 ```c++ void loadFromFile(const char* fileName) { ifstream fin(fileName); Polygon polygon; fin >> polygon.vertexNum; polygon.vertexList = new POINT[polygon.vertexNum]; for (int i = 0; i < polygon.vertexNum; i++) { fin >> polygon.vertexList[i].x >> polygon.vertexList[i].y; } fin.close(); //绘制多边形 setfillcolor(YELLOW); fillpolygon(polygon.vertexList, polygon.vertexNum); //保存多边形坐标到全局变量,以便后续操作 currentPolygon = polygon; } ``` 5. 键盘事件处理函数 在键盘事件处理函数中,我们可以通过按键来触发保存或读取多边形操作。 ```c++ Polygon currentPolygon; //当前多边形 //键盘事件处理函数 void OnKeyEvent(char key) { switch (key) { case 's': //保存多边形到文件 saveToFile("polygon.txt", currentPolygon); break; case 'l': //从文件中读取多边形 loadFromFile("polygon.txt"); break; } } ``` 完整的代码如下:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值