原文地址:

怎样打造炫酷的图形编程  https://www.toutiao.com/i6400951971158688258/

怎样打造炫酷的图形编程

C语言小白入门到大神 2017-03-24 14:42

怎么去写好看的图形编程,之前在学校总是接触到的黑窗口方面的程序,并不是很好看。先暂时给一下思路,顺便最后小编拿一个例子的代码发一下。

1 初始化图形窗口

1.1 窗口

1.1.1 初始化

HWND initgraph(

int width,

int height,

);

flag

绘图环境的样式,默认为 NULL。

NOCLOSE:禁用绘图环境的关闭按钮。

NOMINIMIZE:禁用绘图环境的最小化按钮。

SHOWCONSOLE:保留原控制台窗口。

1.1.2 刷新窗口

void cleardevice();

1.1.3 关闭窗口

void closegraph();

1.2 坐标

1.2.1 逻辑坐标(设备坐标)

void setorigin(int x, int y);

1.2.2 物理坐标(文档坐标)

加群466572167,可以交流学习

1.2.3 坐标转换

setorigin(int x, int y)

cX=XX+x;

CY=YY+y;

1.3 函数

1.3.1 格式控制函数

三原色配置颜色:COLORREF RGB(

BYTE byRed, // 颜色的红色部分

BYTE byGreen, // 颜色的绿色部分

BYTE byBlue // 颜色的蓝色部分

);

设置背景颜色:void setbkcolor(COLORREF color);

设置背景模式:void setbkmode(int mode);

mode:

OPAQUE:背景用当前背景色填充(默认)。

TRANSPARENT:背景是透明的。

设置填充颜色:void setfillcolor(COLORREF color);

设置线颜色:void setlinecolor(COLORREF color);

设置文字格式:settextstyle(int width, int height)

1.3.2 图形绘制函数

画图:void circle(

int x,

int y,

int radius

);

画填充圆:void fillcircle(

int x,

int y,

int radius

);

画线:void line(

int x1,

int y1,

int x2,

int y2

);

画填矩形void rectangle(

int left,

int top,

int right,

int bottom

);

画填充矩形void fillrectangle(

int left,

int top,

int right,

int bottom

);

1.3.3 文字输出函数

输出字符串:void outtextxy(

int x,

int y,

LPCTSTR str

);

输出数值,先将数字格式化输出为字符串

char s[5];

sprintf(s, "%d", 1024);

outtextxy(10, 60, s);

1.3.4 图像处理函数

// 从当前绘图设备获取图像

void getimage(

IMAGE* pDstImg, // 保存图像的 IMAGE 对象指针

int srcX, // 要获取图像区域左上角 x 坐标

int srcY, // 要获取图像区域的左上角 y 坐标

int srcWidth, // 要获取图像区域的宽度

int srcHeight // 要获取图像区域的高度

);

// 绘制图像

void putimage(

int dstX, // 绘制位置的 x 坐标

int dstY, // 绘制位置的 y 坐标

IMAGE *pSrcImg, // 要绘制的 IMAGE 对象指针

DWORD dwRop = SRCCOPY // 三元光栅操作码);

// 从图片文件获取图像(bmp/jpg/gif/emf/wmf/ico)

void loadimage(

IMAGE* pDstImg, // 保存图像的 IMAGE 对象指针

LPCTSTR pImgFile, // 图片文件名

int nWidth = 0, // 图片的拉伸宽度

int nHeight = 0, // 图片的拉伸高度

bool bResize = false // 是否调整 IMAGE 的大小以适应图片

);

1.3.5 鼠标处理函数

MOUSEMSG GetMouseMsg();

鼠标信息:struct MOUSEMSG

{

UINT uMsg; // 当前鼠标消息

bool mkCtrl; // Ctrl 键是否按下

bool mkShift; // Shift 键是否按下

bool mkLButton; // 鼠标左键是否按下

bool mkMButton; // 鼠标中键是否按下

bool mkRButton; // 鼠标右键是否按下

int x; // 当前鼠标 x 坐标(物理坐标)

int y; // 当前鼠标 y 坐标(物理坐标)

int wheel; // 鼠标滚轮滚动值

};

2 帮助文档导读

3 图形编程应用

加群466572167,可以交流学习

小编下面写个例子吧,就写一下坦克大战的地图哈: 加下小编的群466572167可以交流学习,群内也有资料下载学习

/*

记住几个函数就可以了

绘图---绘图窗口

*/

//编译器

#define _CRT_SECURE_NO_WARNINGS

#include<graphics.h>

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

const int rows = 13;

const int cols = 13;

void InitInstance()

{

//0大鸟,1银块 , 2空地,3砖头

int mapIndex[rows][cols] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,

2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2,

2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2,

2, 3, 2, 3, 2, 3, 1, 3, 2, 3, 2, 3, 2,

2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2,

2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,

1, 2, 3, 3, 2, 2, 2, 2, 2, 3, 3, 2, 1,

2, 2, 2, 2, 2, 3, 2, 3, 2, 2, 2, 2, 2,

2, 3, 2, 3, 2, 3, 3, 3, 2, 3, 2, 3, 2,

2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2,

2, 3, 3, 3, 2, 2, 2, 2, 2, 3, 2, 3, 2,

2, 3, 2, 3, 2, 3, 3, 3, 2, 3, 2, 3, 2,

2, 2, 2, 2, 2, 3, 0, 3, 2, 2, 2, 2, 2 };

//文件名字格式化写入

/*

printf()

sprintf(); 可以指定输出的位置

*/

char filename[20] = "";

IMAGE map[4];

//循环把照片放进去

for (int i = 0; i < 4; i++)

{

sprintf(filename, "map%d.jpg", i);

/*

map0.jpg ---filename--map[0]

map1.jpg ---filename--map[1]

map2.jpg ---filename--map[2]

map3.jpg ---filename--map[3]

*/

loadimage(&map[i], filename);

}

int x, y;

for (int i = 0; i < rows; i++)

{

for (int j = 0; j < cols; j++)

{

x = j * 50;

y = i * 50;

putimage(x, y, &map[mapIndex[i][j]]);

/*

mapIndex[i][j],地图函数 0--3

map[i] 0-3

*/

}

}

getchar();

}

int main()

{

//初始化画布: 确定窗口的大小

initgraph(cols*50, rows*50);//图形窗口

InitInstance();

closegraph();//释放窗口

return 0;

}

最终的效果图:

怎样用C语言打造炫酷的图形编程相关推荐

  1. 神级程序员288行代码用C语言打造炫酷的推箱子小游戏!

    根据J2ME版推箱子游戏改编,现改版为VC++版,功能上一模一样,不过现在可以在Windows上运行了,而非限制于手机.游戏界面看上去还不错. 源码结构截图: 代码截图: 原来测试效果: 这个推箱子是 ...

  2. c++语言表白超炫图形_教你用C语言加图形库打造炫酷表白连连看

    图1 今天小编用简单的C语言知识写一个连连看的游戏,但是是有含义的哈,游戏玩完之后又是属于一个表白程序,也感觉不错的哦. 下面小编把全部的代码发出来一下,以及效果图发一下,最终的话把涉及的知识点也讲解 ...

  3. 用devc++表白_教你用C语言加图形库打造炫酷表白连连看

    图1 今天小编用简单的C语言知识写一个连连看的游戏,但是是有含义的哈,游戏玩完之后又是属于一个表白程序,也感觉不错的哦. 下面小编把全部的代码发出来一下,以及效果图发一下,最终的话把涉及的知识点也讲解 ...

  4. 打造炫酷通用的ViewPager指示器 Adapter模式适配所有 1

    ###1.概述 上一期我们已经写了一篇 打造炫酷通用的ViewPager指示器 - 玩转字体变色 可是这种效果虽然绚烂可以装装A和C之间,但是在实际的大多数效果中并不常见,只是在内涵段子中有这个效果而 ...

  5. android 打造炫酷导航栏(仿UC头条)

    年后开始上班甚是清闲,所以想捣鼓一些东西.在翻阅大神杰作Android 教你打造炫酷的ViewPagerIndicator 不仅仅是高仿MIUI 的时候看到下面有一条评论说,如果导航栏能滑动就更好了. ...

  6. 打造炫酷的Proxmox VE 监控界面

    打造炫酷的Proxmox VE 监控界面 今天终于把Proxmox VE(简称PVE)从6.1版本升级到PVE 6.4版本,在Web管理后台对比PVE 6.4与 PVE 6.1,看新增哪些功能?在数据 ...

  7. 【元壤教育AI提示工程】Midjourney神器助力,设计小白3分钟轻松打造炫酷海报!

    前言 关注「元壤教育」公众号,系统学习更多AIGC课程. 看完这篇实操教程,设计师该领盒饭了,哈哈,开个玩笑,各位老板看着办. 本教程针对完全没有设计基础的老板们,手把手教你3分钟利用Midjourn ...

  8. R语言搭建炫酷的线上博客系统

    本文转载自R语言中文社区,转载已获授权. 作者简介Introduction 徐静 硕士研究生.算法工程师 兴趣方向:统计机器学习,深度学习,模型的线上化部署.网络爬虫,前端可视化. 个人博客:http ...

  9. macos 字体_巧用 iTerm2 zsh oh-my-zsh 打造炫酷的 MacOS 终端环境

    MacOS 系统自带的 Bash 虽然已经很强大,但是对于一些细节功能的支持并不完美,重点是对于一个颜控来说,原生 Bash 真的很丑--可塑性也不高.本文将使用 iTerm2 这款被各路大牛吹爆的 ...

最新文章

  1. 【每日学习Mybatis中基础】trim标签使用
  2. Android.mk简介
  3. C语言约瑟夫报数出圈算法,c语言实现约瑟夫环问题
  4. SpringCloud工作笔记068---登录堡垒机_下载文件报错_Xshell向Linux上传下载文件_lrzsz_ZModem
  5. java设置时间_怎么用java设置系统时间?
  6. Hadoop1.x HDFS系统架构
  7. Android简单的发短信示例
  8. 培训变成了闹剧,却不想怎么改进
  9. python语言程序设计实践教程答案上海交通大学_Python推荐书籍从入门到进阶(珍藏版)...
  10. 百词斩不复习_也说说百词斩的缺点
  11. html caption属性的值,然后在属性面板中更改控件的Caption属性值
  12. 一文读懂什么是MRO采购
  13. 把英文句子颠倒过来的C语言代码
  14. [附源码]java毕业设计政府公用车辆管理系统
  15. python中rest是什么意思,Python中的REST调用
  16. html5中不再支持table的cellspacing和cellpadding属性
  17. mapping.xml POJO的映射文件
  18. 轻松在Google Chrome浏览器中管理您的电子邮件
  19. 关于找工作的鸡零狗碎
  20. win10运行快捷键_阿销带你看世界——电脑技巧之电脑快捷键(WIN篇2)

热门文章

  1. android是不是百合手机号码,百合定位(百合定位电话手表)V1.0.16 手机版
  2. 会跳舞的钢珠力学分析
  3. php仅显示月份的日历,JSP_用JSP实现的一个日历程序,!-- 显示任意年、月的日历 - phpStudy...
  4. java毕业设计体育城场地预定系统前台源码+lw文档+mybatis+系统+mysql数据库+调试
  5. icloud无法注销,icloud服务中keyChain钥匙串无法关闭问题的解决。
  6. 智慧水务大屏可视化(Axure高保真原型)
  7. NUCLEO-STM32H7A3ZI-Q使用说明
  8. 鹏业软件打开图纸显示内存不足问题解决
  9. c语言写合泰单片机eeprom,合泰单片机EEPROM编程实例
  10. 特刊|离子阱量子计算简史