C语言-00如何学习C语言与图形库的使用
目录
一、写代码的过程
二、完整的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语言与图形库的使用相关推荐
- c语言 字母 八进制表示'/1011',C语言C语言第一课:C语言概述为什么学习C语言怎样学习C语言.DOC...
[摘要]C语言 第一课: C语言概述 为什么学习C语言 怎样学习C语言 参考资料 ----------------------------------------------------------- ...
- 漫谈C语言及如何学习C语言
漫谈C语言及如何学习C语言 云风最近写了一篇博客<C语言的前世今生>.作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的 ...
- 如何自学python语言-我是如何学习Python语言?
我喜欢学习新的东西,包括工具,算法,技巧等.一来是帮助我更好地解决问题,二来学习的进程令我愉悦. 我是一位数据工作者,经常会使用到各种软件和工具帮助我解决各种数据问题,比方说数据的抽取与解析,数据的加 ...
- 2019年该学习哪门语言?建议学习C#语言
世界上只有少数几种语言是多功能的,而没有一个像C#那样干净整洁. 作者 | Arctek 译者 | 谭开朗,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 最直接的答案是: ...
- c语言函数指针学习心得,c语言 函数指针 学习C语言笔记
c语言 函数指针 大一学的C语言,课,算是学了一遍,后来接触Java,C++,易语言,python,还有写单片机用的类似C语言,可以说后来根本没有好好学,C也忘个差不多了,但是这次我课选了OC,不喜欢 ...
- 初识C语言:小白学习C语言的第一周记录
目录 1.个人情况说明于学习期待 2.学习资源的分享 3.学习C语言的准备工作和本周学习的知识 个人情况说明和学习期待 我是一名大学生新人,因为高中时期有幸接触到了机器人比赛,从此深深地热爱上了计算机 ...
- C语言入门教程学习 C语言学习包括哪些?
嵌入式开发有一定了解的朋友们知道是在操作系统内部开发的,对于操作系统内部来说基本上都是用C语言来进行编译的,所以说对于C语言的学习在嵌入式开发过程中是非常重要的.下面就给大家介绍一些C语言入门教程的相 ...
- HTML语言常用英语,学习html语言应该掌握的几组英文单词
原标题:学习html语言应该掌握的几组英文单词 学习html语言应该掌握的几组英文单词 HTML单词 一.标签 1.:boldface 2. :break row 3.:italic [iˈtælik ...
- 学习c语言好书推荐——学习c语言的7本书
下面给大家介绍7本书,如果不知道哪本适合自己,可以百度了解一下! C primer plus C primer plus作为一本被人推崇备至的c入门经典,C primer plus绝非浪得虚名.应该算 ...
- bcs转10 c语言,小弟刚学习C语言,怎么把下段汇编代码转化为C语言程序,请高手指教!!!单片机89c52...
已结贴√ 问题点数:20 回复次数:3 小弟刚学习C语言,怎么把下段汇编代码转化为C语言程序,请高手指教!!!单片机89c52 BIT_COUNT DATA 07FH TIMER0 ...
最新文章
- Fastadmin管理Mysql_FastAdmin-CMS模版制作(6)-正式部署
- linux rpm mysql 路径_linux基础-linux 下 安装 rpm 格式 的 mysql
- dede 5.6自定义模型列表生成问题,img.lib.php on line 42,请各位帮忙看看
- Python list 操作
- 用matlab绘制一个时钟
- 通过分析一个C程序的汇编指令执行过程,理解计算机的工作。
- OpenCV PCA与指定的保留差异量的实例(附完整代码)
- matlab球面波衍射,单色点源矩孔菲涅耳衍射光场的计算与模拟
- Java:检查器框架
- 报名倒计时 | TeaTalk 深圳站邀您共话安全云世界
- python加法例子_第二讲 做加法的例子
- Java 命令行运行参数大全
- 实现分页统计记录总数时: sql语句的异常
- 【C++ Primer】第十三章 类继承
- sed 插入多行_文本三剑客之sed
- C++之std::bind()用法
- mysql with 查询_mysql笔记(6)-多表查询之with
- 人力资源管理案例选读【1】
- 什么是信息流?如何投放信息流广告?如何收费?
- 解决 Agent JAR loaded but agent failed to initialize
热门文章
- 读《超级整理术》--对整理的思路
- 壁纸小程序云开发+无限裂变+附安装视频教程
- 使用jemeter进行接口压力测试
- PReLU, LReLU, ReLU
- 【测试】对手机拍照测试用例的设计
- 蓝牙驱动卸载后自动安装_外星人的控制中心下载,安装及常见问题处理方法
- java 16进制_JAVA 十六进制与字符串的转换
- ESP8266的AT指令集(基础 Wi-Fi)
- json react 展示工具_如何基于jsoneditor二次封装一个可实时预览的json编辑器组件?(react版)...
- 基于Flink CDC实现实时数据采集(一)-接口设计