一、项目介绍
这是一个用C语言绘制的哆啦A梦。
编译环境:VC6
第三方库:Easyx2022 注意需要提前安装easyX,如没有基础可以先了解easyX图形编程
二、运行截图
三、源码思路
1.引入图形库头文件
1 | #include <graphics.h> |
2.绘制心形气球
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | void heart( int x0, int y0, int size, COLORREF C) { double m, n, x, y; double i; for (i = 0; i <= 2 * size; i = i + 0.01) { // 产生极坐标点 m = i; n = -size * ((( sin (i) * sqrt ( fabs ( cos (i)))) / ( sin (i) + 1.4142)) - 2 * sin (i) + 2); // 转换为笛卡尔坐标 x = n * cos (m) + x0; y = n * sin (m) + y0; setfillcolor(C); solidcircle(( int )x, ( int )y, 2); } } |
3.绘制哆啦A梦
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | // 画脸 setfillcolor(LIGHTBLUE); // 头 setlinecolor(BLACK); fillroundrect(-135, -206, 135, 54, 248, 248); setfillcolor(WHITE); // 脸 fillellipse(-115, -144, 115, 46); fillroundrect(-63, -169, 0, -95, 56, 56); // 右眼 fillroundrect(0, -169, 63, -95, 56, 56); // 左眼 setfillcolor(BLACK); solidcircle(-16, -116, 6); // 右眼球 solidcircle(16, -116, 6); // 左眼球 setfillcolor(RGB(201, 62, 0)); // 鼻子 fillcircle(0, -92, 15); line(0, -77, 0, -4); // 人中 arc(-108, -220, 108, -4, PI * 5 / 4, PI * 7 / 4); // 嘴 line(-42, -73, -90, -91); // 胡子 line(42, -73, 90, -91); line(-41, -65, -92, -65); line(41, -65, 92, -65); line(-42, -57, -90, -39); line(42, -57, 90, -39); // 画身体 line(-81, 32, -138, 72); // 手臂(上) line(81, 32, 138, 72); line(-96, 96, -116, 110); // 手臂(下) line(96, 96, 116, 110); line(-96, 85, -96, 178); // 腿外侧 line(96, 85, 96, 178); arc(-10, 168, 10, 188, 0, PI); // 腿内侧 setfillcolor(WHITE); // 手 fillcircle(-140, 99, 27); fillcircle(140, 99, 27); fillroundrect(-2, 178, -112, 205, 24, 24); // 脚 fillroundrect(2, 178, 112, 205, 24, 24); setfillcolor(LIGHTBLUE); // 身体填充蓝色 floodfill(0, 100, BLACK); setfillcolor(WHITE); // 肚皮 fillcircle(0, 81, 75); solidrectangle(-60, 4, 60, 24); // 用白色矩形擦掉多余的肚皮 pie(-58, 23, 58, 139, PI, 0); // 口袋 // 画铃铛 setfillcolor(RGB(169, 38, 0)); // 绳子 fillroundrect(-100, 23, 100, 42, 12, 12); setfillcolor(RGB(245, 237, 38)); // 铃铛外形 fillcircle(0, 49, 19); setfillcolor(BLACK); // 铃铛上的洞 solidellipse(-4, 50, 4, 57); setlinestyle(PS_SOLID, 3); line(0, 57, 0, 68); setlinestyle(PS_SOLID, 1); // 铃铛上的纹路 line(-16, 40, 16, 40); line(-18, 44, 18, 44); // 气球 line(-140, 80, -140, -40); // 气球连接线 heart(-140, -150, 30, LIGHTRED); // 心形气球 |
四、完整源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | // 表白哆啦 // 编译环境:Visual C++ 6.0,EasyX 2022 #include <graphics.h> #include <conio.h> #include<math.h> #define PI acos(-1.0) double th = PI / 180; // 绘制心形气球 void heart( int x0, int y0, int size, COLORREF C) { double m, n, x, y; double i; for (i = 0; i <= 2 * size; i = i + 0.01) { // 产生极坐标点 m = i; n = -size * ((( sin (i) * sqrt ( fabs ( cos (i)))) / ( sin (i) + 1.4142)) - 2 * sin (i) + 2); // 转换为笛卡尔坐标 x = n * cos (m) + x0; y = n * sin (m) + y0; setfillcolor(C); solidcircle(( int )x, ( int )y, 2); } } // 主函数 int main() { // 创建大小为 800 * 600 的绘图窗口 initgraph(800, 600); // 设置原点 (0, 0) 为屏幕中央(Y轴默认向下为正) setorigin(400, 300); // 使用白色填充背景 setbkcolor(WHITE); cleardevice(); // 画脸 setfillcolor(LIGHTBLUE); // 头 setlinecolor(BLACK); fillroundrect(-135, -206, 135, 54, 248, 248); setfillcolor(WHITE); // 脸 fillellipse(-115, -144, 115, 46); fillroundrect(-63, -169, 0, -95, 56, 56); // 右眼 fillroundrect(0, -169, 63, -95, 56, 56); // 左眼 setfillcolor(BLACK); solidcircle(-16, -116, 6); // 右眼球 solidcircle(16, -116, 6); // 左眼球 setfillcolor(RGB(201, 62, 0)); // 鼻子 fillcircle(0, -92, 15); line(0, -77, 0, -4); // 人中 arc(-108, -220, 108, -4, PI * 5 / 4, PI * 7 / 4); // 嘴 line(-42, -73, -90, -91); // 胡子 line(42, -73, 90, -91); line(-41, -65, -92, -65); line(41, -65, 92, -65); line(-42, -57, -90, -39); line(42, -57, 90, -39); // 画身体 line(-81, 32, -138, 72); // 手臂(上) line(81, 32, 138, 72); line(-96, 96, -116, 110); // 手臂(下) line(96, 96, 116, 110); line(-96, 85, -96, 178); // 腿外侧 line(96, 85, 96, 178); arc(-10, 168, 10, 188, 0, PI); // 腿内侧 setfillcolor(WHITE); // 手 fillcircle(-140, 99, 27); fillcircle(140, 99, 27); fillroundrect(-2, 178, -112, 205, 24, 24); // 脚 fillroundrect(2, 178, 112, 205, 24, 24); setfillcolor(LIGHTBLUE); // 身体填充蓝色 floodfill(0, 100, BLACK); setfillcolor(WHITE); // 肚皮 fillcircle(0, 81, 75); solidrectangle(-60, 4, 60, 24); // 用白色矩形擦掉多余的肚皮 pie(-58, 23, 58, 139, PI, 0); // 口袋 // 画铃铛 setfillcolor(RGB(169, 38, 0)); // 绳子 fillroundrect(-100, 23, 100, 42, 12, 12); setfillcolor(RGB(245, 237, 38)); // 铃铛外形 fillcircle(0, 49, 19); setfillcolor(BLACK); // 铃铛上的洞 solidellipse(-4, 50, 4, 57); setlinestyle(PS_SOLID, 3); line(0, 57, 0, 68); setlinestyle(PS_SOLID, 1); // 铃铛上的纹路 line(-16, 40, 16, 40); line(-18, 44, 18, 44); // 气球 line(-140, 80, -140, -40); // 气球连接线 heart(-140, -150, 30, LIGHTRED); // 心形气球 // 按任意键退出 _getch(); closegraph(); return 0; } |
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程