图解在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),半径 100
getch(); // 按随意键继续
closegraph(); // 关闭图形界面
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
4 在控制台画一个方块
#include <graphics.h>
#include <conio.h> #define PI 3.14159265 void 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();
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
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); // 获取桌面 DC
HDC srcDC = GetDC(NULL);
// 获取 IMAGE 对象的 DC
HDC 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); // 初始化屏幕为 640x480 srand(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
图解在VC里使用graphics.h画图(相似TC)的更多相关文章
- 怎样在VC里面使用graphics.h绘图
网上很多绘图程序和小游戏程序都是用的 TC,在 VC 下编译时提示错误:fatal error C1083: Cannot open include file: 'graphics.h': No su ...
- C++图形编程之graphics.h头文件
graphics.h是Turbo C的针对DOS下的一个C语言图形库,如果要用的话应该用TC的编译器来编译,但是如果需要在vc及vs环境中使用graphics.h的功能,则可以选择下载EasyX图形库 ...
- 使用graphics.h来绘制图形
| 版权声明:本文为博主原创文章,未经博主允许不得转载. graphics.h是TC里面的图形库,如果要用的话应该用TC来编译.分为:像素函数.直线和线型函数.多边形函数.填充函数等.然而在我们使 ...
- 【转】C#中Graphics的画图代码
C#中Graphics的画图代码[转] 架上图片了你就可以在画板上涂改了啊 我要写多几个字上去string str = "Baidu"; //写什么字?Font font = Fo ...
- vc/atlmfc/include/afx.h(24) : fatal error C1189: #error : Building MFC application with /MD[d] (CRT
环境:win7,64位,vs2012 1> c:/program files/microsoft visual studio 8/vc/atlmfc/include/afx.h(24) : fa ...
- 我的C语言的新开端<graphics.h>
进一步接触C语言<graphics.h> #include<stdio.h> #include<graphics.h> #include<conio.h> ...
- graphics.h源代码下载
graphics.h源代码下载 /*graphics.h DefinitionsforGraphicsPackage. Copyright(c)BorlandInternational1987,198 ...
- c中头文件在cpp文件里引用和.h文件引用的思考
我们在编敲代码中头文件是常常使用的. 可是头文件是应该包括在.H文件里还是在.cpp文件里.在这个其中有什么样去差别呢. 假如说我们编写了一个a.cpp .我们将a.cpp文件的变量和函数申明在a. ...
- VC里打开网页
转载请注明来源:https://www.cnblogs.com/hookjc/ 1 ShellExecute 开放分类: API 编程 ShellExecute函数原型及参数含义如下: She ...
随机推荐
- 【Android开发】之Fragment生命周期
上一篇博客我们讲到了,Fragment的基本使用,相信大家都已经了解怎么去使用了.如果还有不懂得同学可以去看一下,传送门.现在我们来讲解一下Fragment的生命周期. 一.Fragment的事务 再 ...
- php截取字符去掉最后一个字符
$str="中国.美国.俄罗斯.德国."$str=substr($str,0,-1); 输出结果为:中国.美国.俄罗斯.德国
- 还没被玩坏的robobrowser(8)——robobrowser的实现原理
背景 学习使用工具实际上不难,不过我们应该通过阅读工具源码来提升自己的水平. 多读代码,读好代码.很不错,robobrowser的代码简单易懂,值得学习. 预备知识 源码地址 一起其实是从browse ...
- mac mini 制作fusion drive 的方法
下载yosemite,格式化磁盘,运行如下命令,制作os x 启动盘 sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resour ...
- POJ 2115:C Looooops
C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19536 Accepted: 5204 Descr ...
- uiautomatorviewer 查看元素新思路
用adb 命令把图片和uix获取出来,再导入uiautomatorviewer adb shell uiautomator dump /data/local/tmp/uidump.uixadb pul ...
- Nginx(五):浏览器本地缓存设置
浏览器缓存(BrowserCaching) 浏览器缓存是为了加速浏览,浏览器在用户磁盘上,对最近请求过的文档进行存储.当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样,就可以加速页面的 ...
- Vue(二):调试神器vue-devtools安装和使用
前言 vue-devtools是一款基于chrome游览器的插件,用于调试vue应用,这可以极大地提高我们的调试效率.接下来我们就介绍一下vue-devtools的安装. 安装 1.chrome商店直 ...
- js判断是否IE浏览器
//ie? if (!!window.ActiveXObject || "ActiveXObject" in window){ //是 alert(1); }else{ //不是 ...
- 三星 S4 手机误删除相片(相册)后的恢复问题,仅记录处理过程,其它Android手机同样适用
无意中删除了三星S4手机中相机的相册.过程是这样的,用手机拍了几张照片,觉得最后那张拍得不好,想删除,于是进入相册,看到有那张照片的图标,选择,删除,悲剧发生了! 这里得说三星的不好:在相册中,相册文 ...