怎样打造炫酷的图形编程 图型编程
liebian365 2024-10-30 04:51 18 浏览 0 评论
怎么去写好看的图形编程,之前在学校总是接触到的黑窗口方面的程序,并不是很好看。先暂时给一下思路,顺便最后小编拿一个例子的代码发一下。
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;
}
最终的效果图:
加群466572167可以交流学习
看到最终的效果图感觉怎样,加下小编的群466572167可以交流学习,群内也有资料下载学习。小编只是给大家一个思路,各类型的图形编程,可以这样去写,不然每天对着黑窗口的话,没有感觉,觉得枯燥乏味。
相关推荐
- “版本末期”了?下周平衡补丁!国服最强5套牌!上分首选
-
明天,酒馆战棋就将迎来大更新,也聊了很多天战棋相关的内容了,趁此机会,给兄弟们穿插一篇构筑模式的卡组推荐!老规矩,我们先来看10职业胜率。目前10职业胜率排名与一周前基本类似,没有太多的变化。平衡补丁...
- VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"
-
首先,程序中头文件的选择,要选择头文件,在文件中是没有对M_PI的定义的。选择:项目——>”XXX属性"——>配置属性——>C/C++——>预处理器——>预处理器定义,...
- 东营交警实名曝光一批酒驾人员名单 88人受处罚
-
齐鲁网·闪电新闻5月24日讯酒后驾驶是对自己和他人生命安全极不负责的行为,为守护大家的平安出行路,东营交警一直将酒驾作为重点打击对象。5月23日,东营交警公布最新一批饮酒、醉酒名单。对以下驾驶人醉酒...
- Qt界面——搭配QCustomPlot(qt platform)
-
这是我第一个使用QCustomPlot控件的上位机,通过串口精确的5ms发送一次数据,再将读取的数据绘制到图表中。界面方面,尝试卡片式设计,外加QSS简单的配了个色。QCustomPlot官网:Qt...
- 大话西游2分享赢取种族坐骑手办!PK趣闻录由你书写
-
老友相聚,仗剑江湖!《大话西游2》2021全民PK季4月激燃打响,各PK玩法鏖战齐开,零门槛参与热情高涨。PK季期间,不仅各种玩法奖励丰厚,参与PK趣闻录活动,投稿自己在PK季遇到的趣事,还有机会带走...
- 测试谷歌VS Code AI 编程插件 Gemini Code Assist
-
用ClaudeSonnet3.7的天气测试编码,让谷歌VSCodeAI编程插件GeminiCodeAssist自动编程。生成的文件在浏览器中的效果如下:(附源代码)VSCode...
- 顾爷想知道第4.5期 国服便利性到底需优化啥?
-
前段时间DNF国服推出了名为“阿拉德B计划”的系列改版计划,截至目前我们已经看到了两项实装。不过关于便利性上,国服似乎还有很多路要走。自从顾爷回归DNF以来,几乎每天都在跟我抱怨关于DNF里面各种各样...
- 掌握Visual Studio项目配置【基础篇】
-
1.前言VisualStudio是Windows上最常用的C++集成开发环境之一,简称VS。VS功能十分强大,对应的,其配置系统较为复杂。不管是对于初学者还是有一定开发经验的开发者来说,捋清楚VS...
- 还嫌LED驱动设计套路深?那就来看看这篇文章吧
-
随着LED在各个领域的不同应用需求,LED驱动电路也在不断进步和发展。本文从LED的特性入手,推导出适合LED的电源驱动类型,再进一步介绍各类LED驱动设计。设计必读:LED四个关键特性特性一:非线...
- Visual Studio Community 2022(VS2022)安装图文方法
-
直接上步骤:1,首先可以下载安装一个VisualStudio安装器,叫做VisualStudioinstaller。这个安装文件很小,很快就安装完成了。2,打开VisualStudioins...
- Qt添加MSVC构建套件的方法(qt添加c++11)
-
前言有些时候,在Windows下因为某些需求需要使用MSVC编译器对程序进行编译,假设我们安装Qt的时候又只是安装了MingW构建套件,那么此时我们该如何给现有的Qt添加一个MSVC构建套件呢?本文以...
- Qt为什么站稳c++GUI的top1(qt c)
-
为什么现在QT越来越成为c++界面编程的第一选择,从事QT编程多年,在这之前做C++界面都是基于MFC。当时为什么会从MFC转到QT?主要原因是MFC开发界面想做得好看一些十分困难,引用第三方基于MF...
- qt开发IDE应该选择VS还是qt creator
-
如果一个公司选择了qt来开发自己的产品,在面临IDE的选择时会出现vs或者qtcreator,选择qt的IDE需要结合产品需求、部署平台、项目定位、程序猿本身和公司战略,因为大的软件产品需要明确IDE...
- Qt 5.14.2超详细安装教程,不会来打我
-
Qt简介Qt(官方发音[kju:t],音同cute)是一个跨平台的C++开库,主要用来开发图形用户界面(GraphicalUserInterface,GUI)程序。Qt是纯C++开...
- Cygwin配置与使用(四)——VI字体和颜色的配置
-
简介:VI的操作模式,基本上VI可以分为三种状态,分别是命令模式(commandmode)、插入模式(Insertmode)和底行模式(lastlinemode),各模式的功能区分如下:1)...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- “版本末期”了?下周平衡补丁!国服最强5套牌!上分首选
- VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"
- 东营交警实名曝光一批酒驾人员名单 88人受处罚
- Qt界面——搭配QCustomPlot(qt platform)
- 大话西游2分享赢取种族坐骑手办!PK趣闻录由你书写
- 测试谷歌VS Code AI 编程插件 Gemini Code Assist
- 顾爷想知道第4.5期 国服便利性到底需优化啥?
- 掌握Visual Studio项目配置【基础篇】
- 还嫌LED驱动设计套路深?那就来看看这篇文章吧
- Visual Studio Community 2022(VS2022)安装图文方法
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)