c语言运行不显示图片,为何加载烟花就换了一句,将图片加载进资源,结果运行中烟花不显示...
为何加载烟花就换了一句,将图片加载进资源,结果运行中烟花不显示
为何将图片装载在资源中编译没任何错误,程序也可基本运行,资源中的图片不工作
#include //标准的输入输出头文件
#include
#include //图形库头文件
#include
#pragma comment(lib,"winmm.lib")
#include "resource.h"
#include
#define NUM 13
#define PI 3.1415926548
//烟花弹结构体
struct Jet
{
int x; //坐标
int y;
int hx; //最高的坐标 将赋值给烟花
int hy;
int height; //高度
bool shoot; //是否可以发射
DWORD t1, t2, dt;//烟花弹的上升速度
IMAGE img[2]; //一亮一暗两张图片
byte n : 1; //图片下标 0 1 //位段 一个二进制位 int 32 float 32 short 16
}jet[13];
//烟花结构体
struct Fire
{
int x, y; //坐标
int cen_x, cen_y; //中心坐标
int width,height; //图片的宽和高
int r; //半径 从小变大
int max_r; //最大的半径
int xy[240][240]; //像素点的集合
bool show;
bool draw; //输出像素点
DWORD t1, t2, dt;
}fire[NUM];
void Init(int i);
void welcome();
void Load();
void Chose(DWORD& t1);
void shoot();
void Show(DWORD* pMem);
int main()
{
initgraph(1200, 800); //打开一个界面
welcome();
DWORD t1 = timeGetTime();
DWORD *pMem = GetImageBuffer();
//循环初始化13次
for (int i = 0; i < NUM; i++)
{
Init(i);
}
Load();
BeginBatchDraw();
while (!_kbhit())
{
Sleep(10);
for (int clr = 0; clr < 1000; clr++)
{
for (int j = 0; j < 2; j++)
{
int px1 = rand() % 1200;
int py1 = rand() % 800;
if (py1 < 799)
{
pMem[py1 * 1200 + px1] = pMem[py1 * 1200 + px1 + 1] = BLACK;
}
}
}
Chose(t1);
shoot();
Show(pMem);
FlushBatchDraw(); //吧显存展示出来
}
getchar();
closegraph(); //关闭界面
return 0;
}
void welcome()
{
//wav
//PlaySound((LPCTSTR)IDR_WAVE1, NULL, SND_RESOURCE | SND_LOOP | SND_ASYNC);
//MP3
mciSendString(L"open ./music/你还要我怎样.mp3 alias BGM", 0, 0, 0);
mciSendString(L"play BGM repeat", 0, 0, 0);
settextcolor(YELLOW);
//怎样得到一个圆的轨迹上的n个坐标。
for (int i = 0; i < 50; i++)
{
int x = 600 + int(180 * sin(PI * 2 * i / 60));
int y = 200 + int(180 * cos(PI * 2 * i / 60));
cleardevice(); //刷新 没有指定颜色 默认为黑色
settextstyle(i, 0, L"楷体");
outtextxy(x - 200, y, L"给:");
outtextxy(x + 50, y + 100, L"某某");
Sleep(25);
}
getchar(); //卡住
cleardevice();
settextstyle(25, 0, L"楷体");
outtextxy(400,150,L"XXXXXXXXXXXXXXXXXXX");
outtextxy(400, 150, L"XXXXXXXXXX");
outtextxy(400, 200, L"XXXXXXXXX");
outtextxy(400, 250, L"XXXXXXXXXXXXXXXXXX");
outtextxy(400, 300, L"XXXXXXXXXXXXXXXXXXXXXXXXXXX");
outtextxy(400, 350, L"XXXXXXXXXXXXXXXXXX");
outtextxy(400, 400, L"XXXXXXXXX");
outtextxy(400, 450, L"XXXXXXXXXXXXXXXXXXXXXXXXXXX");
outtextxy(400, 500, L"XXXXXXXXXXXXXXXXXX");
getchar();
}
void Init(int i)
{
int r[13] = { 120, 120, 155, 123, 130, 147, 138, 138, 130, 135, 140, 132, 155 };
int x[13] = { 120, 120, 110, 117, 110, 93, 102, 102, 110, 105, 100, 108, 110 };
int y[13] = { 120, 120, 85, 118, 120, 103, 105, 110, 110, 120, 120, 104, 85 };
//初始化烟花
fire[i].x = 0;
fire[i].y = 0;
fire[i].width = 240;
fire[i].height = 240;
fire[i].max_r = r[i];
fire[i].cen_x = x[i];
fire[i].cen_y = y[i];
fire[i].show = false;
fire[i].dt = 5;
fire[i].t1 = timeGetTime();
fire[i].r = 0;
//初始化烟花弹
jet[i].x = 0;
jet[i].y = 0;
jet[i].hx = 0;
jet[i].hy = 0;
jet[i].height = 0;
jet[i].t1 = timeGetTime();
jet[i].dt = rand() % 10;
jet[i].n = 0;
jet[i].shoot = false;
}
void Load()
{
//加载烟花
IMAGE fm,gm;
//loadimage(&fm, L"./images/bluexc/flower.jpg");//用这一句,使用文件中的图片可以显示
loadimage(&fm, RT_BITMAP, MAKEINTRESOURCE(IDB_BITMAP2));//换这一句,资源中的图片无法显示,请帮忙修改能运行,我需要将图片装载在资源中,说明程序运行需要装EASYX运行图新界面库
for (int i = 0; i < NUM; i++)
{
SetWorkingImage(&fm); //工作---对象是一张图片
getimage(&gm, i * 240, 0, 240, 240);
SetWorkingImage(&gm); //工作---对象是一张图片
for (int a = 0; a < 240; a++)
{
for (int b = 0; b < 240; b++)
{
fire[i].xy[a][b] = getpixel(a, b);
}
}
}
//加载烟花弹
IMAGE jm;
loadimage(&jm, L"./images/shoot.jpg");
//jm 里面保存了一整张图片 分隔开来
for (int i = 0; i < NUM; i++)
{
SetWorkingImage(&jm); //工作---对象是一张图片
int n = rand() % 5; //0-4
getimage(&jet[i].img[0], n * 20, 0, 20, 50);
getimage(&jet[i].img[1], (n + 5) * 20, 0, 20, 50);
}
SetWorkingImage(NULL); //放弃掉刚才的工作区域。
//零基础 条件选择 循环。
}
//选出13个
void Chose(DWORD& t1)
{
DWORD t2 = timeGetTime();
if (t2 - t1 > 100)
{
int n = rand() % 20;
if (n < NUM&&jet[n].shoot == false&&fire[n].show==false)
{
jet[n].x = rand() % 1200;
jet[n].y = rand() % 100 + 600; //600-699
jet[n].hx = jet[n].x;
jet[n].hy = rand() % 400;
jet[n].height = jet[n].y - jet[n].hy;
jet[n].shoot = true;
putimage(jet[n].x, jet[n].y, &jet[n].img[jet[n].n], SRCINVERT);
}
t1 = t2;
}
}
void shoot()
{
for (int i = 0; i < NUM; i++)
{
jet[i].t2 = timeGetTime();
if (jet[i].t2 - jet[i].t1>jet[i].dt&&jet[i].shoot == true)
{
putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n], SRCINVERT);
if (jet[i].y > jet[i].hy)
{
jet[i].n++; //明暗交替的效果
jet[i].y -= 5;
}
putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n], SRCINVERT);
//
if (jet[i].y <= jet[i].hy)
{
putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n], SRCINVERT);
fire[i].x = jet[i].hx + 10;
fire[i].y = jet[i].hy;
fire[i].show = true;
jet[i].shoot = false;
}
jet[i].t1 = jet[i].t2;
}
}
}
void Show(DWORD* pMem) //显存指针 像素 这里面所有的像素点的集合
{
//3D游戏 地形 天空 显存来做
int drt[16] = { 5, 5, 5, 5, 5, 5, 25, 25, 25, 25, 55, 55, 55, 55, 55, 55 };
for (int i = 0; i < NUM; i++)
{
fire[i].t2 = timeGetTime();
if (fire[i].t2 - fire[i].t1>fire[i].dt&&fire[i].show == true)
{
if (fire[i].r < fire[i].max_r)
{
fire[i].r++;
fire[i].dt = drt[fire[i].r / 10];
fire[i].draw = true;
}
if (fire[i].r >= fire[i].max_r-1)
{
fire[i].draw = false;
Init(i);
}
fire[i].t1 = fire[i].t2;
}
if (fire[i].draw)
{
for (double a = 0; a <= 6.28; a += 0.01)
{
int x1 = (int)(fire[i].cen_x + fire[i].r*cos(a));
int y1 = (int)(fire[i].cen_y + fire[i].r*sin(a));
if (x1 > 0 && x10 && y1 < fire[i].height)
{
int b = fire[i].xy[x1][y1] & 0xff;
int g = (fire[i].xy[x1][y1] >> 8) & 0xff;
int r = (fire[i].xy[x1][y1] >> 16);
int xx = (int)(fire[i].x + fire[i].r*cos(a));
int yy = (int)(fire[i].y - fire[i].r*sin(a));
if (r>0x20 && g > 0x20 && b > 0x20 && xx > 0 && xx<1200 && yy>0 && yy < 800)
pMem[yy * 1200 + xx] = BGR(fire[i].xy[x1][y1]);
}
}
fire[i].draw = false;
}
}
}
c语言运行不显示图片,为何加载烟花就换了一句,将图片加载进资源,结果运行中烟花不显示...相关推荐
- android异步加载图片并缓存到内存和sd卡上,Android批量图片加载经典系列——采用二级缓存、异步加载网络图片...
http://www.cnblogs.com/jerehedu/p/4560119.html 2015-06-08 09:20 by 杰瑞教育, 232 阅读, 1 评论, 收藏, 编辑一.问题描述 ...
- rp原型中鼠标悬停显示图片_悬停状态原型4种方式
rp原型中鼠标悬停显示图片 There are tons of options available for UX designers to prototype a user experience an ...
- Android中WebView加载sdcard中的html显示
场景 Android中使用WebView加载本地html并支持运行JS代码和支持缩放: Android中使用WebView加载本地html并支持运行JS代码和支持缩放_BADAO_LIUMANG_QI ...
- Android中使用WebChromeClient显示Openlayers加载本地GeoJson文件显示地图(跨域问题解决)
场景 Openlayers中加载GeoJson文件显示地图: Openlayers中加载GeoJson文件显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面加载显示GeoJso ...
- OpenGL3.x,4.x中使用FreeImage显示图片的BUG-黑色,或颜色分量顺序错乱
OpenGL3.x,4.x中使用FreeImage显示图片的BUG-黑色,或颜色分量顺序错乱 1 //参照FreeImage官网给出的CTextrueManager写的加载函数 2 //官方给的例子是 ...
- jsp中不能正常显示图片+不能正常显示bootstrap字体图标
一直以来,bootstrap框架下的轮播图在jsp中不能正式显示,我本以为是配置问题,导致bootstrap和jsp不一样. 话不多说,上图: 前期: 这是一个轮播图,可以看到第一:图片不能显示,我的 ...
- Ubuntu中Python无法显示图片
Ubuntu中Python无法显示图片 显示错误是UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, ...
- tsc : 无法加载文件 S:\DEVNVM\nodejs\tsc.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink
关于在学习typescript时使用vscode的终端利用命令tsc 文件名.ts进行ts文件的编译时会出现类似的报错: tsc : 无法加载文件 S:\DEVNVM\nodejs\tsc.ps1,因 ...
- R语言ggplot2可视化箱图(boxplot)时忽视异常值(outlier)并重新分配坐标轴的范围是的可视化的箱图可以有效显示箱体实战
R语言ggplot2可视化箱图(boxplot)时忽视异常值(outlier)并重新分配坐标轴的范围是的可视化的箱图可以有效显示箱体实战 目录
最新文章
- 2019 年,19 种方法让自己成为更好的 Node.js 工程师
- 要买东西,要买好的,提高效率,经常用的
- 【数据结构与算法】实验 编写双链表的结点查找和删除算法
- 文档丨Oracle 20c 概念手册
- 18.外部相机校准——旋转(Rotation),R是什么样子的,绕Z轴旋转的例子,齐次坐标旋转_2
- 洛克人红色思考型机器人叫什么_如何让机器人“好好说话”?
- opencv移植到ubuntu
- 39. 二叉树的深度(C++版本)
- iPhone Web App及优缺点【书摘】
- 【报告分享】笔记本行业营销洞察白皮-腾讯x京东(附下载)
- JDK11 JAVA11下载安装与快速配置环境变量教程
- 一文看懂AutoML
- OpenGL入门学习
- 虚拟机无法连接到图形服务器,vmware vsphere client无法连接到服务器
- Excel如何统计数据个数
- 广度优先搜索(BFS)最短路径输出表示(三种方法)
- 澳大利亚大学着眼于不断增长的中国市场,将在迪拜推出全球奢侈品管理学位
- 使用FFmpeg实现rtmp播放和音视频同步
- 一夜爆红的BeReal,到底是年轻人的叛逆还是社交的新潮向?
- 亲测好用!四款ps小白也能用的宣传印刷物料!