目录

一、写代码的过程

二、完整的c代码分析

三、图像库

(一)图形库基本概念

1、颜色

2、坐标

3、设备

(二)批量贴图

(三)鼠标消息

(四)小游戏—五子棋


一、写代码的过程

  • 编辑器:程序员写代码的过程(记事本、vc6.0、vim)(让程序员看懂)

  • 编译器:查看代码的语法错误,生成汇编语言。

  • 汇编器:将生成好汇编语言 生成 二进制语言(目标文件)

  • 连接器:将生成好 二进制语言+用到的库+启动代码 ==>可执行文件

二、完整的c代码分析

  • 主函数参数记得写---int main(int argc,char *argv[])

  • 再输入输出前需要有适当的描述语句,方便客户理解输入的是什么,输出的是什么

  • 浮点型变量初始化赋值(0.0f)

  • 编写程序时要按段落来写,适当的隔开不同功能的函数语句

#include<stdio.h>
// 定义一个宏 建议大写 和普通变量区分开
#define PI 3.14int main(int argc,char *argv[])
{float r=0.0f; // 定义一个r变量 系统给r开辟4字节空间float area = 0.0f; // 定义一个面积变量// 获得半径 从键盘获得scanfprintf("请输入圆的半径r:");scanf("%f", &r); // 带阻塞// 算法:计算面积area = 3.14 * r * rarea = PI*r*r;// 将面积输出%.2f中的.2表示小数部分保留两位printf("area = %.2f\n",area);return 0;
}

三、图像库

(一)图形库基本概念

1、颜色

  • 预定义颜色常量

  • 16进制颜色表示

  • RGB宏合成颜色

  • 色彩模型转换的RGB颜色

2、坐标

  • 物理坐标:X轴向右为正,Y轴向下为正,单位是像素

  • 逻辑坐标:方向同物理坐标,单位是点,逻辑点=像素点

3、设备

  • 默认的图形绘画窗口

  • IMAGE对象

  • 函数功能参考EasyX_Hel软件

#define _CRT_SECURE_NO_WARNINGS // 关闭安全检查
#include<stdio.h> // 输入输出头文件
#include<stdlib.h> // system("pause")头文件
#include"graphics.h" // 图形库头文件
int main()
{initgraph(666, 666); // 打开一个画图窗口,长宽// initgraph(666, 666, SHOWCONSOLE);画图的时候一般不用SHOWCONSOLE保留原控制台窗口,界面有两个窗口// 划直线 画直线前要设置图像颜色、线形setlinecolor(GREEN); // 设置划线颜色setlinestyle(0, 5); // 设置划线样式为实线,划线宽度为5像素// 0是实线 1是虚线,具体线形看图形库line(100, 100, 300, 300); // 两个端点坐标画填充矩形setlinecolor(GREEN); // 设置划线颜色setlinestyle(0, 3); // 设置划线样式为实线,划线宽度为3像素setfillcolor(BLUE); // 设置填充颜色setfillstyle(2, 1); // 设置填充图案fillrectangle(400, 400, 600, 600); // 画填充矩形,左上角、右下角端点坐标fillcircle(400, 100, 50); // 画填充圆,圆心坐标与半径system("pause");closegraph(); // 关闭画图窗口return 0;
}

(二)批量贴图

  • 图片存放在.c文件的文档里

  • 图片文件名报错,项目-属性-配置属性-常规-字符集-使用多字节字符集

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include"graphics.h" // 图形库头文件
int main()
{initgraph(666, 666); // 打开一个画图窗口,长宽666X666// 贴图IMAGE img; // 图片对象img:用于保存图片loadimage(&img, "1.jpg", 200, 300);  // 加载图片:给定图片对象、图片路径和图片大小putimage(50, 50, &img); // 在给定位置绘制图片// 输出文本settextcolor(RED); // 设置字体颜色settextstyle(16, 0, ("宋体")); // 设置当前字体为高16像素的“宋体”,宽度为 0,则比例自适应outtextxy(500, 300, "宝宝"); // 头字母坐标值500,300system("pause");closegraph(); // 关闭画图窗口return 0;
}

(三)鼠标消息

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include"graphics.h" // 图形库头文件
int main()
{initgraph(666, 666); // 打开画图窗口IMAGE img; // 定义图片对象loadimage(&img, "1.jpg", 200, 300); // 加载图片// 鼠标消息MOUSEMSG msg; // 定义鼠标消息变量while (1) // 用while语句重复获取鼠标消息,重复贴图{msg = GetMouseMsg(); // 使用鼠标消息变量获取鼠标消息if (msg.uMsg == WM_LBUTTONUP) // 鼠标左键弹起就贴图{cleardevice(); // 用当前背景颜色清空绘图窗口putimage(msg.x, msg.y, &img); // 根据鼠标坐标绘制图片}}system("pause");closegraph(); // 关闭画图窗口return 0;
}
  • 当前鼠标消息:鼠标消息变量名.uMsg;

  • 当前鼠标消息可以用于条件判断

鼠标消息变量名.uMsg==WM_LBUTTONDOWN // 如果鼠标左键按下
鼠标消息变量名.uMsg==WM_RBUTTONDOWN // 如果鼠标右键按下

(四)小游戏—五子棋

 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include "graphics.h"void game() // 五子棋{initgraph(600, 600); // 打开图形库窗口// 画棋盘fillrectangle(20, 20, 580, 580); // 画填充矩形setlinecolor(BLACK); // 设置画线样式为黑色setlinestyle(0, 2); // 设置画线宽度为2像素,画线样式为实线for (int i = 50; i <= 550; i += 50) // 画棋盘的线{line(50, i, 550, i); // 画横线line(i, 50, i, 550); // 画竖线}// 鼠标消息MOUSEMSG msg; // 定义鼠标消息变量int i = 0;while (1) // 使用while循环重复获取鼠标消息,重复贴图{// 实现黑白棋子if (i % 2 == 0) {setfillcolor(BLACK); // 设置填充颜色为黑色}else{setfillcolor(WHITE); // 设置填充颜色为白色}// 放置棋子msg = GetMouseMsg(); // 使用鼠标消息变量获取鼠标消息if (msg.uMsg == WM_LBUTTONUP) // 如果鼠标左键弹起就贴图{// 四舍五入加强版:49舍50进int x = (msg.x + 25) / 50 * 50; // 整50的个数int y = (msg.y + 25) / 50 * 50; fillcircle(x, y, 25); // 画圆i++; // 黑白棋子交替 }}system("pause");closegraph(); // 关闭图形库窗口}// 主函数int main(){game();system("pause");return 0;}

C语言-00如何学习C语言与图形库的使用相关推荐

  1. c语言 字母 八进制表示'/1011',C语言C语言第一课:C语言概述为什么学习C语言怎样学习C语言.DOC...

    [摘要]C语言 第一课: C语言概述 为什么学习C语言 怎样学习C语言 参考资料 ----------------------------------------------------------- ...

  2. 漫谈C语言及如何学习C语言

    漫谈C语言及如何学习C语言 云风最近写了一篇博客<C语言的前世今生>.作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的 ...

  3. 如何自学python语言-我是如何学习Python语言?

    我喜欢学习新的东西,包括工具,算法,技巧等.一来是帮助我更好地解决问题,二来学习的进程令我愉悦. 我是一位数据工作者,经常会使用到各种软件和工具帮助我解决各种数据问题,比方说数据的抽取与解析,数据的加 ...

  4. 2019年该学习哪门语言?建议学习C#语言

    世界上只有少数几种语言是多功能的,而没有一个像C#那样干净整洁. 作者 | Arctek 译者 | 谭开朗,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 最直接的答案是: ...

  5. c语言函数指针学习心得,c语言 函数指针 学习C语言笔记

    c语言 函数指针 大一学的C语言,课,算是学了一遍,后来接触Java,C++,易语言,python,还有写单片机用的类似C语言,可以说后来根本没有好好学,C也忘个差不多了,但是这次我课选了OC,不喜欢 ...

  6. 初识C语言:小白学习C语言的第一周记录

    目录 1.个人情况说明于学习期待 2.学习资源的分享 3.学习C语言的准备工作和本周学习的知识 个人情况说明和学习期待 我是一名大学生新人,因为高中时期有幸接触到了机器人比赛,从此深深地热爱上了计算机 ...

  7. C语言入门教程学习 C语言学习包括哪些?

    嵌入式开发有一定了解的朋友们知道是在操作系统内部开发的,对于操作系统内部来说基本上都是用C语言来进行编译的,所以说对于C语言的学习在嵌入式开发过程中是非常重要的.下面就给大家介绍一些C语言入门教程的相 ...

  8. HTML语言常用英语,学习html语言应该掌握的几组英文单词

    原标题:学习html语言应该掌握的几组英文单词 学习html语言应该掌握的几组英文单词 HTML单词 一.标签 1.:boldface 2. :break row 3.:italic [iˈtælik ...

  9. 学习c语言好书推荐——学习c语言的7本书

    下面给大家介绍7本书,如果不知道哪本适合自己,可以百度了解一下! C primer plus C primer plus作为一本被人推崇备至的c入门经典,C primer plus绝非浪得虚名.应该算 ...

  10. bcs转10 c语言,小弟刚学习C语言,怎么把下段汇编代码转化为C语言程序,请高手指教!!!单片机89c52...

    已结贴√ 问题点数:20 回复次数:3 小弟刚学习C语言,怎么把下段汇编代码转化为C语言程序,请高手指教!!!单片机89c52 BIT_COUNT     DATA 07FH TIMER0       ...

最新文章

  1. Fastadmin管理Mysql_FastAdmin-CMS模版制作(6)-正式部署
  2. linux rpm mysql 路径_linux基础-linux 下 安装 rpm 格式 的 mysql
  3. dede 5.6自定义模型列表生成问题,img.lib.php on line 42,请各位帮忙看看
  4. Python list 操作
  5. 用matlab绘制一个时钟
  6. 通过分析一个C程序的汇编指令执行过程,理解计算机的工作。
  7. OpenCV PCA与指定的保留差异量的实例(附完整代码)
  8. matlab球面波衍射,单色点源矩孔菲涅耳衍射光场的计算与模拟
  9. Java:检查器框架
  10. 报名倒计时 | TeaTalk 深圳站邀您共话安全云世界
  11. python加法例子_第二讲 做加法的例子
  12. Java 命令行运行参数大全
  13. 实现分页统计记录总数时: sql语句的异常
  14. 【C++ Primer】第十三章 类继承
  15. sed 插入多行_文本三剑客之sed
  16. C++之std::bind()用法
  17. mysql with 查询_mysql笔记(6)-多表查询之with
  18. 人力资源管理案例选读【1】
  19. 什么是信息流?如何投放信息流广告?如何收费?
  20. 解决 Agent JAR loaded but agent failed to initialize

热门文章

  1. 读《超级整理术》--对整理的思路
  2. 壁纸小程序云开发+无限裂变+附安装视频教程
  3. 使用jemeter进行接口压力测试
  4. PReLU, LReLU, ReLU
  5. 【测试】对手机拍照测试用例的设计
  6. 蓝牙驱动卸载后自动安装_外星人的控制中心下载,安装及常见问题处理方法
  7. java 16进制_JAVA 十六进制与字符串的转换
  8. ESP8266的AT指令集(基础 Wi-Fi)
  9. json react 展示工具_如何基于jsoneditor二次封装一个可实时预览的json编辑器组件?(react版)...
  10. 基于Flink CDC实现实时数据采集(一)-接口设计