easyx把图片数据用二维数组存起来,再将点一个一个输出到窗体上

本文介绍了如何使用EasyX图形库将图片数据存储到二维数组中,然后按照特定算法在窗体上逐点输出。通过示例代码详细解释了从读取图片像素到在窗体上绘制的过程,包括烟花效果的实现。
摘要由CSDN通过智能技术生成

//烟花
struct fire
{
    int x, y;
    int cx, cy;
    int firexy[240][240];
    int r, maxr;
    bool isboom;
    bool isshow;
    unsigned long t1, t2, dt;     //爆炸扩散速度
    IMAGE  fire_img;
}fire1;

1.定义一个二维数组

2.用二维数组实现存放图片数据

3.在显示缓存中显示图片

4.显存中存放数据是用一位数组,从左到右从上到下

 1.int array[width][height];//width是图片的宽  height是图片的高

2.设置需要转化成数据的图片

SetWorkingImage(&image); image为图片对象

3.循环便利获取图片的像素点,i为图片的宽,j为图片的高

for (int i = 0; i < 240; i++)
                {
                    for (int j = 0; j < 240; j++)
                    {
                        fire1.firexy[i][j] = getpixel(i, j);//getpixel是easyx图形库获取像素点方法
                    }
                }

4.重新设置窗体为默认绘图设备

etWorkingImage(NULL);

5.计算以图片中心为圆点,半径作为指针画一个圈,圈上点的x和y坐标

这里的a为角度变量,6.28≈2π,也就是一圈360度

这里的fire1对象是通过一开始定义的结构体定义的对象

for (double a = 0; a < 6.28; a += 0.01)
                    {
                        int x = fire1.cx + fire1.r * cos(a);
                        int y = fire1.cy - fire1.r * sin(a);

                        if (x > 0 && x < 240 && y>0 && y < 240)
                        {
                            int b = fire1.firexy[x][y] & 0xff;   //blue
                            int g = (fire1.firexy[x][y] >> 8) & 0xff;   //green
                            int r = fire1.firexy[x][y] >> 16;   //red

                              //这里求的是圈上点在窗体上的坐标
                            int xx = (int)(fire1.x + fire1.r * cos(a));
                            int yy = (int)(fire1.y - fire1.r * sin(a));

                            //这里是颜色选则范围和窗体坐标选则判断
                            if (r > 0x20 && g > 0x20 && b > 0x20 && xx < 1200 && xx>0 && yy > 0 && yy < 600)

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值