C语言画图形(图形库graphics的使用)

  • 目录
    工具
    c语言基本绘图
    文字输出
    c语言基本贴图
    获取鼠标、键盘信息

工具

(1)环境:VC++
(2)库函数:graphics.h(因为不是标准库函数,所以需下载EASYX)
(3)编译软件:VS、VC++6.0

c语言基本绘图

本节目录:窗口的创建及背景颜色、基本绘图函数(点、线、圆、矩形以及设置其属性)

#include <stdio.h>
#include <graphics.h>//图形库
#include <time.h>//时间库函数
int main(){//注意窗口的横纵坐标原点是左上角1)窗口的创建及背景颜色①窗口的创建initgraph(int width,int hight);//创建窗口closegraph();//关闭窗口②设置背景颜色setbkcolor(RED);cleardevice();//参数可以为颜色的英文,记住需要刷新窗口才能显示设置后的颜色setbkcolor(RGB(int x,int y,int z));cleardevice();//或者可以调制三原色,记住需要刷新窗口才能显示设置后的颜色2)基本绘图函数①绘点putpixel(int x,int y,color color);//参数为横纵坐标和颜色//如何随机生成点呢#include <time.h>srand((unsigned int)time(NULL));//设置随机点的种子int x = rand()%n;//rand()是生成随机数,然后对n取余,则得到的所有的x值都小于等于nint y = rand()%n;putpixel(x,y,color);②绘线line(int x1,int y1,int x2,int y2);//两点确定一条直线//如何设置线的属性呢(注意必须写在画线函数的前面)setlinecolor(color color);//参数可以是颜色,也可以是三原色setlinestyle(linestyle linestyle,int width);//参数linestyle可以点进去库函数查看,可以设置虚线、直线....,width是线的宽度③矩形rectangle(int x1,int y1,int x2,int y2);//两点确定一个矩形④圆circle(int x,int y,int r);//圆心的横纵坐标和圆的半径⑤填充(实心填充(不渲染边的颜色)、全部填充)//圆的填充setfillcolor(color color);//先设置填充颜色//全部填充fillcircle(int x,int y,int r);//参数横纵坐标和半径//实心填充solidcircle(int x,int y,int r);//矩形的填充}

文字输出

#include <stdio.h>
#include <graphics.h>//图形库
int main(){文字输出:(1)输出文字函数outtextxy(int x,int y,"jiajia");注意:多字节报错修改方式:①outtextxy(int x,int y,L"jiajia");outtextxy(int x,int y,_T("jiajia"));outtextxy(int x,int y,"jiajia");//修改项目属性,将“字符集”修改为使用多字节字符集(2)文字格式setcolor(BLACK);//文字颜色settextstyle(int width,int hight,"文字字体(例如黑体)");//文字的宽和高,以及文字的字体,字体路径:C:\Windows\Fonts\setbkmode(TRANSPARENT);//文字背景透明(3)输出数字(注意,输出数字的方法是将数字转换为字符串去输出)char str[1000];//首先定义一个字符数组int x = 20;//需要输出的数字sprintf(str,"输出数字x = %d",x);//将引号里的字符串转化为字符串并输出
}

c语言基本贴图

本节目录:基本绘图、图片大小问题、图片路径问题、批量加载图片
贴图putimage(int x,int y,&m);是把图片的左上角放到(x,y)

#include <stdio.h>
#include <graphics>
int main(){(1)基本绘图注意:图片变量获取图片地址时一定在变量前面加上取地址符IMAGE m;//定义图片变量loadimage(&m,"m.jpg(或者m.png)"int width,int hight);//将图片的地址赋给m(注意:width和hight为图片的宽和高)putimage(int x,int y,&m);//参数为图片要放在窗口的坐标和m(即图片的地址)(2)图片大小问题解决方法有以下两种①缩放图片的大小(即长宽)去适应窗口②通过图片变量区域获取图片的大小IMAGE m;int width = m.getwidth;int hight = m.gethight;③直接去查看图片的属性(3)图片路径问题(相对路径、绝对路径)①相对路径loadimage(&m,"m.jpg(或者m.png)");//此时的图片就在当前项目的文件下,可以直接这样引用②绝对路径(即图片的当前位置)loadimage(&m,"C:/Users/Administration/Desktop/m.jpg(或者m.png)");//C:\Users\Administrator\Desktop(电脑中的地址),由于转义字符问题的存在,在这里我们的绝对地址使用反斜杠'/'或者双斜杠'\\'(4)批量加载图片IMAGE image[100];for(int i = 1 ;i < n ;i++){//n为需要加载出来的图片数量char imageName[100] = "";sprintf(imageName,"%d.jpg");//图片名字需要手动更改为1、 2、 3 、4...nloadimage(&image[i - 1],imageName[i - 1]);putimage(x,y,&image[i]);(5)透明贴图步骤:①准备背景图和掩码图//注意制作背景图和掩码图时白色部分一定要纯白,黑色部分一定要纯黑②SRCAND方式去贴掩码图③SRCPAIND方式去贴背景图示例:loadimage(&background,"background.jpg(或者m.png)");loadimage(&mask,"mask.jpg(或者m.png)");putimage(x,y,&mask,SRCAND);//SRCAND方式去贴掩码图putimage(x,y,&background,SRCPAIND);//SRCPAIND方式去贴背景图}


左边为背景图(黑色必须纯黑),右边为掩码图

获取鼠标、键盘信息

本节目录:

int main(){(1)鼠标操作步骤:MouseMsg mouse;//声明一个鼠标消息变量(mousemessage)mouse = GetMouseMsg();//获取鼠标消息switch(mouse){case WM_MOUSEMOV:outtextxy(x,y,_T(""));//其他的动作可以鼠标右击查看break;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于DDD中Domain的思考

2019独角兽企业重金招聘Python工程师标准>>> 本文既不推销UML&#xff0c;也不推广DDD&#xff0c;更不涉及各种论战。-- 作者 某天又一次打开关于DDD(领域驱动设计)的PDF文档时&#xff0c;自己有了个疑问&#xff1a;什么是领域(Domain)&#xff1f;译文中是这样描…

算法设计TSP问题动态规划

#include <iostream> #include <cmath> using namespace std; //集合虚拟化用000 、001 、010 、011 、100 、101 、110 、111分别表示{} 、{1}&#xff08;V[2^(1-1)]&#xff09; 、{2}&#xff08;V[2^(2-1)]&#xff09; 、{1,2}&#xff08;V[2^(1-1)2^(2-1)]…

字符串使用与内部实现原理

Redis 发展到现在已经有 9 种数据类型了&#xff0c;其中最基础、最常用的数据类型有 5 种&#xff0c;它们分别是&#xff1a;字符串类型、列表类型、哈希表类型、集合类型、有序集合类型&#xff0c;而在这 5 种数据类型中最常用的是字符串类型&#xff0c;所以本文我们先从字…

Lisp-Stat翻译 —— 第九章 统计绘图窗体

2019独角兽企业重金招聘Python工程师标准>>> 第九章 统计绘图窗体 除了前几章略述的绘图窗体原型提供的基本绘图工具之外&#xff0c;Lisp-Stat里的统计绘图还需要用来管理数据和将那些数据转换成屏幕上的图形的工具集。这些工具由绘图原型graph-proto提供。更多的…

操作系统(王道笔记第三章内存)

第三章内存3.1_1内存的基础知识&#xff08;1&#xff09;什么是内存&#xff1a;略&#xff08;2&#xff09;进程运行的基本原理①从写程序到程序运行②链接③装入3.1_2内存管理的概念&#xff08;1&#xff09;内存管理管哪几个方面&#xff08;2&#xff09;内存保护①上下…

Redis 快速搭建与使用

Redis 是由 C 语言开发的开源内存数据存储器&#xff0c;经常被用作数据库、缓存以及消息队列等。 Redis 因为其强大的功能和简洁的设计&#xff0c;深受广大开发者和公司的喜爱&#xff0c;几乎占领了内存数据库市场的所有份额。 1 Redis 特性 Redis 有很多优秀的特性&#…

hibernate annotation注解方式来处理映射关系

2019独角兽企业重金招聘Python工程师标准>>> 在hibernate中&#xff0c;通常配置对象关系映射关系有两种&#xff0c;一种是基于xml的方式&#xff0c;另一种是基于annotation的注解方式&#xff0c;熟话说&#xff0c;萝卜青菜&#xff0c;可有所爱&#xff0c;每个…

操作系统Ubuntu(实验一二)

摘录&#xff1a;https://www.cnblogs.com/penglang14/p/10632360.html 实验一二1.1_小技巧1.2_ls查看目录命令1.3_cd切换目录命令1.4_查看文件内容命令(1)cat filename(2)more filename(3)head [-n] filename([]表示此内容可有可无)&#xff08;4&#xff09;wc命令确定行数、…

Redis 是如何执行的?

在以往的面试中&#xff0c;当问到一些面试者&#xff1a;Redis 是如何执行的&#xff1f;收到的答案往往是&#xff1a;客户端发命令给服务器端&#xff0c;服务端收到执行之后再返回给客户端。然而对于执行细节却「避而不谈」 &#xff0c;当继续追问服务器端是如何执行的&am…

第五章I/O管理

I/O章节5.1.1I/O分类&#xff08;1&#xff09;按使用特性分&#xff08;2&#xff09;I/O设备按传输速率分类&#xff08;3&#xff09;I/O设备按信息交换的单位分5.1.2I/O控制器5.1.3I/O控制方式&#xff08;1&#xff09;程序直接控制方式&#xff08;轮询&#xff09;&…

列表使用与内部实现原理

列表类型 (List) 是一个使用链表结构存储的有序结构,它的元素插入会按照先后顺序存储到链表结构中,因此它的元素操作 (插入\删除) 时间复杂度为 O(1),所以相对来说速度还是比较快的,但它的查询时间复杂度为 O(n),因此查询可能会比较慢。 1 基础使用 列表类型的使用相对来…

操作系统习题

操作系统习题习题一一、选择习题二一、选择二、综合题习题三一、选择题&#xff1f;二、简答题进程互斥遵循的四个原则&#xff1a;空闲让进、忙则等待、有限等待、让权等待重点习题四一、选择&#xff1f;&#xff1f;二、综合题死锁产生的 4 个必要条件是&#xff1a; &#…

WCF trace、log

1. 打开wcf配置&#xff1a; &#xff12;. enable trace &#xff0c; log 可以改变log路径&#xff1a; &#xff13;. 用 SvcTraceViewer.exe &#xff08;直接在c盘下搜索&#xff09; 查看 &#xff14;. 如果想自定义trace&#xff1a; catch(Exception ex) { Trace.Writ…

字典使用与内部实现原理

字典类型 (Hash) 又被成为散列类型或者是哈希表类型,它是将一个键值 (key) 和一个特殊的“哈希表”关联起来,这个“哈希表”表包含两列数据:字段和值。例如我们使用字典类型来存储一篇文章的详情信息,存储结构如下图所示: 同理我们也可以使用字典类型来存储用户信息,并且…

算法设计与分析复习第一二章(时间复杂度和蛮力法)

算法复习一二章第一章时间复杂度第二章蛮力法&#xff08;1&#xff09;查找问题顺序查找&#xff08;2&#xff09;排序问题选择排序起泡排序&#xff08;3&#xff09;组合问题0-1bag问题概述&#xff08;略&#xff09;&#xff08;4&#xff09;图问题哈密顿回路TSP问题&am…

有序集合使用与内部实现原理

有序集合类型 (Sorted Set) 相比于集合类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。有序集合的存储元素值也是不能重复的,但分值是可以重复的。 当我们把学生的成绩存储在有序集…

Android 友盟SDK 终极解决报错:SocialSDK_QQZone_2.jar contains native libraries that

转自&#xff1a;http://bbs.umeng.com/thread-6552-1-2.html 报错信息&#xff1a;The library SocialSDK_QQZone_2.jar contains native libraries that will not run on the device.解决方案&#xff1a;此问题和Eclipse环境有关&#xff0c;按照如下步骤操作即可Eclipse-&g…

Redis 持久化——AOF

使用 RDB 持久化有一个风险,它可能会造成最新数据丢失的风险。因为 RDB 的持久化有一定的时间间隔,在这个时间段内如果 Redis 服务意外终止的话,就会造成最新的数据全部丢失。 可能会操作 Redis 服务意外终止的条件: 安装 Redis 的机器停止运行,蓝屏或者系统崩溃;安装 R…

第四章文件管理

第四章文件管理4.1_2初识文件4.1_2文件的逻辑结构无结构文件有结构文件&#xff08;1&#xff09;顺序文件&#xff08;2&#xff09;索引文件索引顺序文件多级索引顺序文件4.1_3文件目录文件控制块FCB&#xff08;2&#xff09;单级目录&#xff08;3&#xff09;两级目录结构…

免费的管理页面模板

2019独角兽企业重金招聘Python工程师标准>>> Free Bootstrap Admin Templates for Designers 1. Admin Lite AdminLTE - 是一个完全响应式管理模板。基于Bootstrap3的框架。高度可定制的&#xff0c;易于使用。支持很多的屏幕分辨率适合从小型移动设备到大型台式机。…