打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
图解在VC里使用graphics.h绘图(类似TC)

1 www.easyx.cn 下载 EasyX 库

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

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


3 在控制台画一个圆

  1. #include <graphics.h> // 引用图形库  
  2. #include <conio.h>  
  3. void main()  
  4. {  
  5.      initgraph(640, 480); // 初始化绘图窗口  
  6.      circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100  
  7.      getch(); // 按任意键继续  
  8.      closegraph(); // 关闭图形界面  
  9. }  



4 在控制台画一个方块

  1. #include <graphics.h>  
  2. #include <conio.h>  
  3.   
  4. #define PI 3.14159265  
  5.   
  6. void main()  
  7. {  
  8.     // 创建大小为 800 * 600 的绘图窗口  
  9.     initgraph(400, 300);  
  10.   
  11.     // 设置原点 (0, 0) 为屏幕中央(Y轴默认向下为正)  
  12.     setorigin(200, 150);  
  13.   
  14.     // 使用藏青色填充背景  
  15.     setbkcolor(0x7c5731);  
  16.     cleardevice();  
  17.   
  18.     // 设置绘图样式  
  19.     setlinecolor(WHITE);                            // 设置线条颜色为白色  
  20.     setlinestyle(PS_SOLID | PS_ENDCAP_FLAT, 10);    // 设置线条样式为宽度 10 的实线,端点是平的  
  21.     setfillcolor(0x24c097);                         // 设置填充颜色为绿色  
  22.   
  23.     // 画方块  
  24.     fillroundrect(-75, -111, 75, 39, 36, 36);  
  25.   
  26.     // 按任意键退出  
  27.     _getch();  
  28.     closegraph();  
  29. }  



5 星空

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

  1. // 程序名称:星空  
  2. // 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版  
  3. // 最后更新:2009-2-22  
  4. //  
  5. #include <graphics.h>  
  6. #include <time.h>  
  7. #include <conio.h>  
  8.   
  9. #define MAXSTAR 200 // 星星总数  
  10.   
  11. struct STAR  
  12. {  
  13.     double x;  
  14.     int y;  
  15.     double step;  
  16.     int color;  
  17. };  
  18.   
  19. STAR star[MAXSTAR];  
  20.   
  21. // 初始化星星  
  22. void InitStar(int i)  
  23. {  
  24.     star[i].x = 0;  
  25.     star[i].y = rand() % 480;  
  26.     star[i].step = (rand() % 5000) / 1000.0 + 1;  
  27.     star[i].color = (int)(star[i].step * 255 / 6.0 + 0.5);  // 速度越快,颜色越亮  
  28.     star[i].color = RGB(star[i].color, star[i].color, star[i].color);  
  29. }  
  30.   
  31. // 移动星星  
  32. void MoveStar(int i)  
  33. {  
  34.     // 擦掉原来的星星  
  35.     putpixel((int)star[i].x, star[i].y, 0);  
  36.   
  37.     // 计算新位置  
  38.     star[i].x += star[i].step;  
  39.     if (star[i].x > 640) InitStar(i);  
  40.   
  41.     // 画新星星  
  42.     putpixel((int)star[i].x, star[i].y, star[i].color);  
  43. }  
  44.   
  45. // 主函数  
  46. void main()  
  47. {  
  48.     srand((unsigned)time(NULL)); // 随机种子  
  49.     initgraph(640, 480);    // 打开图形窗口  
  50.   
  51.     // 初始化所有星星  
  52.     for(int i=0; i<MAXSTAR; i++)  
  53.     {  
  54.         InitStar(i);  
  55.         star[i].x = rand() % 640;  
  56.     }  
  57.   
  58.     // 绘制星空,按任意键退出  
  59.     while(!kbhit())  
  60.     {  
  61.         for(int i=0; i<MAXSTAR; i++)  
  62.             MoveStar(i);  
  63.         Sleep(20);  
  64.     }  
  65.   
  66.     closegraph();    // 关闭图形窗口  
  67. }  



6 屏幕截图

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

  1. /////////////////////////////////////////////////////////  
  2. // 程序名称:实现桌面截图  
  3. // 编译环境:Visual C++ 6.0 / 2010,EasyX 20130117(beta)  
  4. // 作    者:yangw80 <yw80@qq.com>  
  5. // 最后修改:2013-1-29  
  6. // 项目类型:Win32 Application  
  7. //  
  8. #include <graphics.h>  
  9.   
  10.   
  11. // 抓取桌面图像到 *pimg 对象中  
  12. void CaptureDesktop(IMAGE *pimg)  
  13. {  
  14.     // 通过 Windows API 获取桌面的宽高  
  15.     int w = GetSystemMetrics(SM_CXSCREEN) / 2;  
  16.     int h = GetSystemMetrics(SM_CYSCREEN) / 2;  
  17.   
  18.     // 调整 pimg 的大小  
  19.     Resize(pimg, w, h);  
  20.   
  21.     // 获取桌面 DC  
  22.     HDC srcDC = GetDC(NULL);  
  23.     // 获取 IMAGE 对象的 DC  
  24.     HDC dstDC = GetImageHDC(pimg);  
  25.   
  26.     // 在两个 DC 之间执行图像拷贝,将桌面抓图拷贝到 IMAGE 对象里面  
  27.     BitBlt(dstDC, 0, 0, w, h, srcDC, 0, 0, SRCCOPY);  
  28. }  
  29.   
  30.   
  31. // 主函数  
  32. int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)  
  33. {  
  34.     // 定义 IMAGE 对象  
  35.     IMAGE img;  
  36.   
  37.     // 调用抓取桌面图像的函数  
  38.     CaptureDesktop(&img);  
  39.   
  40.     // 创建绘图窗口  
  41.     initgraph(500, 300);  
  42.   
  43.     // 在窗口中显示 IMAGE 中保存的桌面图像  
  44.     putimage(0, 0, &img);  
  45.   
  46.     // 按 ESC 键退出  
  47.     while(!(GetAsyncKeyState(VK_ESCAPE) & 0x8000))  
  48.         Sleep(20);  
  49.   
  50.     closegraph();  
  51.     return 0;  
  52. }  



7 做一个字符动画

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

  1. #include <graphics.h>  
  2. #include <conio.h>  
  3. #include <time.h>  
  4.   
  5. // 主函数  
  6. void main()  
  7. {  
  8.     initgraph(400, 300);        // 初始化屏幕为 640x480  
  9.       
  10.     srand(time(NULL));          // 设置随机种子  
  11.     setfont(16, 0, "Arial");    // 设置字母的字体和大小  
  12.     setfillstyle(BLACK);        // 设置清除字母的填充区域颜色  
  13.       
  14.     char target;                // 目标字母  
  15.     int x, y;                   // 字母的位置  
  16.       
  17.     // 主循环  
  18.     while(true)  
  19.     {  
  20.         target = 65 + rand() % 26;      // 产生任意大写字母  
  21.         x = rand() % 380;               // 产生任意下落位置  
  22.         for (y=0; y<280; y++)  
  23.         {  
  24.             setcolor(GREEN);            // 设置字母的颜色  
  25.             outtextxy(x, y, target);    // 显示字母  
  26.               
  27.             // 延时,并清除字母  
  28.             Sleep(10);  
  29.             bar(x, y, x + 16, y + 16);  
  30.         }  
  31.     }  
  32.   
  33.       
  34.     // 关闭图形界面  
  35.     closegraph();  
  36. }  



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

8 改进

在 VC 中创建代码请直接使用默认的 .cpp 扩展名,不要加 .c 扩展名。
并不是所有的 TC 绘图函数都能支持,许多函数在 EasyX 库中都变得更强大了,比如颜色,过去 TC 只能支持 16 色,现在可以支持上千万种颜色。还有字体,可以使用 Windows 下安装的任何字体,等等。参考帮助。



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
怎么实现VC登录对话框
C语言编程:使用EasyX库,让你的控制台程序支持绘图功能
(一)EGE入门教程
分享一个有趣的库,让你学习C语言不会觉得那么枯燥
EasyX
[VC]内存泄露检测
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服