图解在VC里使用graphics.h画图(相似TC)

1 www.easyx.cn 下载 EasyX 库

我下的2014;解压后例如以下图;

2 依据自己的VC 版本号进行安装


3 在控制台画一个圆

#include <graphics.h> // 引用图形库
#include <conio.h>
void main()
{initgraph(640, 480); // 初始化画图窗体circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100getch(); // 按随意键继续closegraph(); // 关闭图形界面
}



4 在控制台画一个方块

#include <graphics.h>
#include <conio.h>#define PI 3.14159265void main()
{// 创建大小为 800 * 600 的画图窗体initgraph(400, 300);// 设置原点 (0, 0) 为屏幕中央(Y轴默认向下为正)setorigin(200, 150);// 使用藏青色填充背景setbkcolor(0x7c5731);cleardevice();// 设置画图样式setlinecolor(WHITE);							// 设置线条颜色为白色setlinestyle(PS_SOLID | PS_ENDCAP_FLAT, 10);	// 设置线条样式为宽度 10 的实线,端点是平的setfillcolor(0x24c097);							// 设置填充颜色为绿色// 画方块fillroundrect(-75, -111, 75, 39, 36, 36);// 按随意键退出_getch();closegraph();
}



5 星空

这是来自easyx站点上的一个范例;

// 程序名称:星空
// 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版
// 最后更新:2009-2-22
//
#include <graphics.h>
#include <time.h>
#include <conio.h>#define MAXSTAR 200	// 星星总数struct STAR
{double x;int y;double step;int color;
};STAR star[MAXSTAR];// 初始化星星
void InitStar(int i)
{star[i].x = 0;star[i].y = rand() % 480;star[i].step = (rand() % 5000) / 1000.0 + 1;star[i].color = (int)(star[i].step * 255 / 6.0 + 0.5);	// 速度越快。颜色越亮star[i].color = RGB(star[i].color, star[i].color, star[i].color);
}// 移动星星
void MoveStar(int i)
{// 擦掉原来的星星putpixel((int)star[i].x, star[i].y, 0);// 计算新位置star[i].x += star[i].step;if (star[i].x > 640)	InitStar(i);// 画新星星putpixel((int)star[i].x, star[i].y, star[i].color);
}// 主函数
void main()
{srand((unsigned)time(NULL)); // 随机种子initgraph(640, 480);	// 打开图形窗体// 初始化全部星星for(int i=0; i<MAXSTAR; i++){InitStar(i);star[i].x = rand() % 640;}// 绘制星空。按随意键退出while(!kbhit()){for(int i=0; i<MAXSTAR; i++)MoveStar(i);Sleep(20);}closegraph();    // 关闭图形窗体
}



6 屏幕截图

这也是来自easyx站点的样例,演示了graphics.h也可在Win32程序中使用;

/
// 程序名称:实现桌面截图
// 编译环境:Visual C++ 6.0 / 2010,EasyX 20130117(beta)
// 作    者:yangw80 <yw80@qq.com>
// 最后改动:2013-1-29
// 项目类型:Win32 Application
//
#include <graphics.h>// 抓取桌面图像到 *pimg 对象中
void CaptureDesktop(IMAGE *pimg)
{// 通过 Windows API 获取桌面的宽高int w = GetSystemMetrics(SM_CXSCREEN) / 2;int h = GetSystemMetrics(SM_CYSCREEN) / 2;// 调整 pimg 的大小Resize(pimg, w, h);// 获取桌面 DCHDC srcDC = GetDC(NULL);// 获取 IMAGE 对象的 DCHDC dstDC = GetImageHDC(pimg);// 在两个 DC 之间运行图像拷贝,将桌面抓图复制到 IMAGE 对象里面BitBlt(dstDC, 0, 0, w, h, srcDC, 0, 0, SRCCOPY);
}// 主函数
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{// 定义 IMAGE 对象IMAGE img;// 调用抓取桌面图像的函数CaptureDesktop(&img);// 创建画图窗体initgraph(500, 300);// 在窗体中显示 IMAGE 中保存的桌面图像putimage(0, 0, &img);// 按 ESC 键退出while(!(GetAsyncKeyState(VK_ESCAPE) & 0x8000))Sleep(20);closegraph();return 0;
}



7 做一个字符动画

做一个字符从控制台窗体顶端往下落的动画;

#include <graphics.h>
#include <conio.h>
#include <time.h>// 主函数
void main()
{initgraph(400, 300);		// 初始化屏幕为 640x480srand(time(NULL));			// 设置随机种子setfont(16, 0, "Arial");	// 设置字母的字体和大小setfillstyle(BLACK);		// 设置清除字母的填充区域颜色char target;				// 目标字母int x, y;					// 字母的位置// 主循环while(true){target = 65 + rand() % 26;		// 产生随意大写字母x = rand() % 380;				// 产生随意下落位置for (y=0; y<280; y++){setcolor(GREEN);			// 设置字母的颜色outtextxy(x, y, target);	// 显示字母// 延时,并清除字母Sleep(10);bar(x, y, x + 16, y + 16);}}// 关闭图形界面closegraph();
}



还有些问题,下落的字母会拖着一个白色尾巴。下次再搞;

8 改进

在 VC 中创建代码请直接使用默认的 .cpp 扩展名,不要加 .c 扩展名。
并非全部的 TC 画图函数都能支持,很多函数在 EasyX 库中都变得更强大了。比方颜色。过去 TC 仅仅能支持 16 色。如今能够支持上千万种颜色。

还有字体,能够使用 Windows 下安装的不论什么字体,等等。參考帮助。


上述project下载

http://pan.baidu.com/s/1o8qyWLs

文件名称

easyxdemo

转载于:https://www.cnblogs.com/wzjhoutai/p/7375211.html

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

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

相关文章

使用SwingWorker的Java Swing中的多线程

如果要使用Swing用J​​ava编写桌面或Java Web Start程序&#xff0c;您可能会觉得需要通过创建自己的线程在后台运行某些东西。 没有什么可以阻止您在Swing中使用标准的多线程技术&#xff0c;并且需要遵循通常的注意事项。 如果您有多个线程访问相同的变量&#xff0c;则需要…

微信小程序之阻止冒泡事件

众所周知&#xff0c;在微信小程序给标签绑定点击方法大家都会想到 "bindtap" 但是在页面中会遇到 点击 会冒泡而触发其他元素的时间发生 那么怎么办呢 就把引发冒泡事件的始作俑者的 bindtap 更改成catchtap 即可 转载于:https://www.cnblogs.com/wzy0526/p/8423989…

MySql Jar 包下载

MySql JAR 包下载 我们要使用Spring 链接MySql 需要两个Jar 包 一个是C3p0 一个是MySql 的Connection Jar 包 C3p0&#xff1a; 进入下面的网址 http://www.mchange.com/projects/c3p0/ 按照黄色的指示 下载 2. MySql Jar 包 进入MySql 官网 https://dev.mysql.com/down…

c语言以空格分割字符串_c语言中,输入任意字符串,任意空格隔开

c语言中,输入任意字符串,任意空格隔开关注:132 答案:3 mip版解决时间 2021-01-27 16:01提问者更无风月2021-01-27 01:51如题,希望大神代码最佳答案二级知识专家闪光的男人2021-01-27 02:50用scanf以%s读入字符串&#xff0c;即可实现输入以空格分隔的字符串。以下代码功能为&…

Unity经典游戏教程之:是男人就下100层

版权声明&#xff1a; 本文原创发布于博客园"优梦创客"的博客空间&#xff08;网址&#xff1a;http://www.cnblogs.com/raymondking123/&#xff09;以及微信公众号"优梦创客"&#xff08;微信号&#xff1a;unitymaker&#xff09;您可以自由转载&#x…

使用Flying-Saucer生成PDF中的条形码

Flying-Saucer是一个不错的库&#xff0c;可以从Java应用程序中生成PDF文档。 只需生成一堆XHTML&#xff0c;然后将其放入渲染器中&#xff0c;然后使用iText生成所需的文档即可。 但是&#xff0c;当涉及条形码时&#xff0c;Flying-Saucer无法访问iText的内置条形码功能&am…

Html和websocket初识

一、web框架 众所周知&#xff0c;对于所有的Web应用&#xff0c;本质上其实就是一个socket服务端&#xff0c;用户的浏览器其实就是一个socket客户端。 import socketdef handle_request(client):buf client.recv(1024)client.send(b"HTTP/1.1 200 OK\r\n\r\n")cli…

java lombok 视频_Java开发神器Lombok使用详解

最近正在写SpringBoot系列文章和录制视频教程&#xff0c;每次都要重复写一些Getter/Setter、构造器方法、字符串输出的ToString方法和Equals/HashCode方法等。甚是浪费时间&#xff0c;也影响代码的可读性。因此&#xff0c;今天就给大家推荐一款Java开发神器——Lombok&#…

11-[函数进阶]-闭包

1.什么是闭包&#xff1f; 内部函数对外部函数作用域里变量的引用&#xff08;非全局变量&#xff09;&#xff0c;则称内部函数为闭包。 def outer():n 10def inner():print("inner:", n)return innerval outer() print(val) val() 闭包的意义&#xff1a;返回的…

Java应该是更高级别还是更低级别?

总览 Java 8带来了许多简化的功能&#xff0c;例如Lambda表达式&#xff0c; 类型注释和虚拟扩展 。 尽管此功能很重要&#xff1a;a&#xff09;有价值&#xff0c;b&#xff09;赶上较凉的语言&#xff0c;但是这些更丰富&#xff0c;更高级的功能是Java应当重点关注的领域。…

django开发者模式中的autoreload是怎样实现的

在开发django应用的过程中&#xff0c;使用开发者模式启动服务是特别方便的一件事&#xff0c;只需要 python manage.py runserver 就可以运行服务&#xff0c;并且提供了非常人性化的autoreload机制&#xff0c;不需要手动重启程序就可以修改代码并看到反馈。刚接触的时候觉得…

html5与css3入门知识点精炼

<meta name "keywords" content"…………"/>&#xff08;网页搜索时要输入的关键字&#xff09;<meta name "author" content "作者的名字"<meta http-equiv "refresh" content "跳转的时间 ; URL跳转…

CSS实现单行、多行文本溢出显示省略号(…)

如果实现单行文本的溢出显示省略号同学们应该都知道用text-overflow:ellipsis属性来&#xff0c;当然还需要加宽度width属来兼容部分浏览。 实现方法&#xff1a; overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 效果如图&#xff1a; 但是这个属性只支持单行…

java的方法是什么用,Java中的本机方法是什么?它们应该在何处使用?

A native method has the same syntax as an abstract method, but where is it implemented?解决方案What are native methods in Java and where should they be used?Once you see a small example, it becomes clear:Main.java:public class Main {public native int int…

JAXB –表示空集合和空集合

示范代码 以下演示代码将用于Java模型的所有不同版本。 它只是将一个集合设置为null&#xff0c;第二个设置为空列表&#xff0c;第三个设置为填充列表。 package package blog.xmlelementwrapper;import java.util.ArrayList; import javax.xml.bind.*;public class Demo {pu…

显示日历的指令:cal

1.显示日历的指令&#xff1a;cal &#xff08;1&#xff09;参数&#xff1a; &#xff08;2&#xff09;实例&#xff1a; 转载于:https://www.cnblogs.com/yfacesclub/p/8434449.html

简单好用的计算器:bc

1.简单好用的计算器&#xff1a;bc &#xff08;1&#xff09;参数&#xff1a; &#xff08;2&#xff09;实例&#xff1a; 执行浮点运算和一些高级函数 设定小数精度&#xff08;数值范围&#xff09; 进制转换 执行结果为&#xff1a;11000000&#xff0c;这是用bc将十进制…

Day2 第一次写python

写代码只要会Cpython就可以了Java虚拟机即可执行python代码对于Java代码 也会生成中间代码 做成虚拟机 pypy python代码 先变成字节码 再变成机器码 计算机即可识别 pypy&#xff1a;直接把代码转换成机器码 2.7 可以不加加括号3.6 一定要写括号 #&#xff01;/user/bin/python…

java注解类型命名_第三十九条:注解优先于命名模式

根据经验&#xff0c;一般使用命令模式表明有些程序元素需要通过某种工具或者框架进行特殊处理。例如&#xff0c;在Java4发行版本之前&#xff0c;JUnit测试框架原本要求用户一定要用test作为测试方法名称的开头。这种方法可行&#xff0c;但是有几个很严重的缺点。首先&#…

查看Servlet 3.0的新增功能

随着JEE6规范上市&#xff0c;在企业应用程序领域中如何开发应用程序方面发生了一些重大变化。 在本文中&#xff0c;我将介绍有关Web应用程序开发的一些更改。 首先&#xff0c;请告别web.xml部署描述符&#xff08;至少是其中的一部分&#xff09;。 好吧&#xff0c;它并不是…