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;译文中是这样描…

Oracle plsql 计算日期间工作日天数

declarev_fdate date : to_date(2013-10-4,yyyy-mm-dd);v_ldate date : to_date(2013-10-22,yyyy-mm-dd);v_interval_a number;v_interval_b number;v_interval_all number;begin--先算整周有几周&#xff0c;然后乘一周五天工作日v_interval_a : floor((v_ldate - v_fdate)/7)…

MySQL 性能优化 分布式

MySQL 性能指标都有哪些?如何得到这些指标? MySQL 的性能指标如下: ① TPS(Transaction Per Second) 每秒事务数,即数据库每秒执行的事务数。 MySQL 本身没有直接提供 TPS 参数值,如果我们想要获得 TPS 的值,只有我们自己计算了,可以根据 MySQL 数据库提供的状态变…

Java Collections CheckedCollection()方法与示例

集合类的checkedCollection()方法 (Collections Class checkedCollection() method) checkedCollection() Method is available in java.lang package. DrawnCollection()方法在java.lang包中可用。 checkedCollection() Method is used to return the typesafe view of the gi…

算法设计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)]…

Oracle 练习题 20131021 for 循环练习

--Oracle 练习题 20131021 for 循环练习--1、用for循环实现一个倒置的乘法表。beginfor i in reverse 1 .. 9 loopfor j in reverse 1 .. i loopdbms_output.put(i || x || j || || i * j || );end loop;dbms_output.put_line();end loop;end;--2、打印1-100之间所有的素数。…

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

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

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

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

Java ClassLoader getSystemResource()方法与示例

ClassLoader类getSystemResource()方法 (ClassLoader Class getSystemResource() method) getSystemResource() method is available in java.lang package. getSystemResource()方法在java.lang包中可用。 getSystemResource() method is used to find the system resource of…

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

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

按钮button加超链接

突然想做一个普通按钮&#xff0c;然后让按钮超链接到别的页面&#xff0c;不知道怎么搞&#xff0c;不过还是在百度找到了。1.如果让本页转向新的页面则用&#xff1a;<input typebutton οnclick"window.location.href(连接)"> 2.如果需要打开一个新的页面进…

Redis 快速搭建与使用

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

如何计算Python中列表项的出现次数?

The python count() method counts the number of occurrences of an element in the list and returns it. python count()方法对列表中某个元素的出现次数进行计数并返回它。 Syntax: 句法&#xff1a; list.count(x)The count() method takes a single argument, x, whose…

网页自动关闭的代码

<script language"javascript">window.openernull; window.open(, _self, );//模拟自己打开自己window.close();//再关闭就没有对话框了</script>--------------------------以下是过多少秒自动关闭网页,弹窗<html><head><title>JS定时…

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…

java 枚举迭代_Java中的枚举和迭代器之间的区别

java 枚举迭代Java中的枚举与迭代器 (Enumeration vs Iterator in Java) Here, we will see how Enumeration differs from Iterator? 在这里&#xff0c;我们将看到Enumeration与Iterator有何不同&#xff1f; 1)枚举 (1) Enumeration) Enumeration is an interface which i…

ORA-14551: 无法在查询中执行 DML 操作

最近在调试一个带DML操作的函数时&#xff0c;一直不成功&#xff0c;在PL/SQL中测试时没问题&#xff0c;通过SQL语句调用函数时就不行了&#xff0c;刚开始一直没找到原因&#xff0c;后来无意间把 函数中捕获异常的代码注释掉&#xff0c;终于通过SQL调试时&#xff0c;弹出…

第五章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;&…