怎样用C语言打造炫酷的图形编程
原文地址:
怎样打造炫酷的图形编程 https://www.toutiao.com/i6400951971158688258/
怎样打造炫酷的图形编程
怎么去写好看的图形编程,之前在学校总是接触到的黑窗口方面的程序,并不是很好看。先暂时给一下思路,顺便最后小编拿一个例子的代码发一下。
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语言打造炫酷的图形编程相关推荐
- 神级程序员288行代码用C语言打造炫酷的推箱子小游戏!
根据J2ME版推箱子游戏改编,现改版为VC++版,功能上一模一样,不过现在可以在Windows上运行了,而非限制于手机.游戏界面看上去还不错. 源码结构截图: 代码截图: 原来测试效果: 这个推箱子是 ...
- c++语言表白超炫图形_教你用C语言加图形库打造炫酷表白连连看
图1 今天小编用简单的C语言知识写一个连连看的游戏,但是是有含义的哈,游戏玩完之后又是属于一个表白程序,也感觉不错的哦. 下面小编把全部的代码发出来一下,以及效果图发一下,最终的话把涉及的知识点也讲解 ...
- 用devc++表白_教你用C语言加图形库打造炫酷表白连连看
图1 今天小编用简单的C语言知识写一个连连看的游戏,但是是有含义的哈,游戏玩完之后又是属于一个表白程序,也感觉不错的哦. 下面小编把全部的代码发出来一下,以及效果图发一下,最终的话把涉及的知识点也讲解 ...
- 打造炫酷通用的ViewPager指示器 Adapter模式适配所有 1
###1.概述 上一期我们已经写了一篇 打造炫酷通用的ViewPager指示器 - 玩转字体变色 可是这种效果虽然绚烂可以装装A和C之间,但是在实际的大多数效果中并不常见,只是在内涵段子中有这个效果而 ...
- android 打造炫酷导航栏(仿UC头条)
年后开始上班甚是清闲,所以想捣鼓一些东西.在翻阅大神杰作Android 教你打造炫酷的ViewPagerIndicator 不仅仅是高仿MIUI 的时候看到下面有一条评论说,如果导航栏能滑动就更好了. ...
- 打造炫酷的Proxmox VE 监控界面
打造炫酷的Proxmox VE 监控界面 今天终于把Proxmox VE(简称PVE)从6.1版本升级到PVE 6.4版本,在Web管理后台对比PVE 6.4与 PVE 6.1,看新增哪些功能?在数据 ...
- 【元壤教育AI提示工程】Midjourney神器助力,设计小白3分钟轻松打造炫酷海报!
前言 关注「元壤教育」公众号,系统学习更多AIGC课程. 看完这篇实操教程,设计师该领盒饭了,哈哈,开个玩笑,各位老板看着办. 本教程针对完全没有设计基础的老板们,手把手教你3分钟利用Midjourn ...
- R语言搭建炫酷的线上博客系统
本文转载自R语言中文社区,转载已获授权. 作者简介Introduction 徐静 硕士研究生.算法工程师 兴趣方向:统计机器学习,深度学习,模型的线上化部署.网络爬虫,前端可视化. 个人博客:http ...
- macos 字体_巧用 iTerm2 zsh oh-my-zsh 打造炫酷的 MacOS 终端环境
MacOS 系统自带的 Bash 虽然已经很强大,但是对于一些细节功能的支持并不完美,重点是对于一个颜控来说,原生 Bash 真的很丑--可塑性也不高.本文将使用 iTerm2 这款被各路大牛吹爆的 ...
最新文章
- 【每日学习Mybatis中基础】trim标签使用
- Android.mk简介
- C语言约瑟夫报数出圈算法,c语言实现约瑟夫环问题
- SpringCloud工作笔记068---登录堡垒机_下载文件报错_Xshell向Linux上传下载文件_lrzsz_ZModem
- java设置时间_怎么用java设置系统时间?
- Hadoop1.x HDFS系统架构
- Android简单的发短信示例
- 培训变成了闹剧,却不想怎么改进
- python语言程序设计实践教程答案上海交通大学_Python推荐书籍从入门到进阶(珍藏版)...
- 百词斩不复习_也说说百词斩的缺点
- html caption属性的值,然后在属性面板中更改控件的Caption属性值
- 一文读懂什么是MRO采购
- 把英文句子颠倒过来的C语言代码
- [附源码]java毕业设计政府公用车辆管理系统
- python中rest是什么意思,Python中的REST调用
- html5中不再支持table的cellspacing和cellpadding属性
- mapping.xml POJO的映射文件
- 轻松在Google Chrome浏览器中管理您的电子邮件
- 关于找工作的鸡零狗碎
- win10运行快捷键_阿销带你看世界——电脑技巧之电脑快捷键(WIN篇2)
热门文章
- android是不是百合手机号码,百合定位(百合定位电话手表)V1.0.16 手机版
- 会跳舞的钢珠力学分析
- php仅显示月份的日历,JSP_用JSP实现的一个日历程序,!-- 显示任意年、月的日历 - phpStudy...
- java毕业设计体育城场地预定系统前台源码+lw文档+mybatis+系统+mysql数据库+调试
- icloud无法注销,icloud服务中keyChain钥匙串无法关闭问题的解决。
- 智慧水务大屏可视化(Axure高保真原型)
- NUCLEO-STM32H7A3ZI-Q使用说明
- 鹏业软件打开图纸显示内存不足问题解决
- c语言写合泰单片机eeprom,合泰单片机EEPROM编程实例
- 特刊|离子阱量子计算简史