全新超详细!实验二来袭!2024 CSU 多媒体技术与应用实验二(详细版)

目录

软件设备

实验内容

内容1:加载多个位图文件

内容二:利用像素操作实现单色(R、G、B)、灰度图像的显示

内容三:倒立和正立

内容四:图像叠加

内容五:波纹显示

参考文章:


软件设备

Visual Studio2022

实验内容

1.向内存加载两个或多个 BMP位图文件

2.利用像素操作实现单色(R、G、B)、灰度图像的显示

3.通过操作像素实现图像的倒立和正立显示

4.实现两个图像的叠加(一张风景照 一张自己的人物照)

5.改变教材给出的波纹模拟程序中石头大小(stonesize)、石头重量(stoneweight)和显示帧频率等参数,观察模拟效果,并分析所看到现象的原因。

内容1:加载多个位图文件

  1. 首先,创建一个WIN32项目,如何创建项目?请参考这篇文章:全新超详细!2024 CSU 多媒体技术与应用实验一(详细版)-CSDN博客

  2. 接下来,我们按照教材中的步骤进行操作,首先添加全局变量,位置注释里有写,创建的代码模板中是会有的:

  3. 添加图片显示的代码,这段代码是添加在wWinMain函数中的,你也可以自己写一个函数封装这个代码,然后在wWinMain中去调用,并做好前置声明。代码的内容如下,这里是两张图片的添加:

也可以封装这两个代码,再放到wWinMain函数中:

//加载第一张图片
void loadImage1(HINSTANCE hInstance) {
    if (LoadImage(hInstance, L"image_1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE) == NULL)
    {
        MessageBox(NULL, L"加载图像错误", L"message", NULL);
    }
    else
    {
        hbmp = (HBITMAP)LoadImage(hInstance, L"image_1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    }
    GetObject(hbmp, sizeof(BITMAP), &bmp);
    bi.biSize = sizeof(BITMAPINFOHEADER);
    bi.biWidth = bmp.bmWidth;
    bi.biHeight = bmp.bmHeight;
    bi.biPlanes = bmp.bmPlanes;
    bi.biBitCount = bmp.bmBitsPixel;
    bi.biCompression = bmp.bmType;
    bi.biSizeImage = bmp.bmWidth * bmp.bmHeight * bmp.bmBitsPixel / 8;
    bi.biXPelsPerMeter = 0;
    bi.biYPelsPerMeter = 0;
    bi.biClrImportant = 0;
    hDib = GlobalAlloc(GHND, bi.biSizeImage);
    lpbitmap = (BYTE*)GlobalLock(hDib);
}
​
void loadImage2(HINSTANCE hInstance) {
    if (LoadImage(hInstance, L"image_3.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE) == NULL)
    {
        MessageBox(NULL, L"加载图像错误", L"message", NULL);
    }
    else
    {
        hbmp2 = (HBITMAP)LoadImage(hInstance, L"image_3.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    }
    GetObject(hbmp2, sizeof(BITMAP), &bmp2);
    bi2.biSize = sizeof(BITMAPINFOHEADER);
    bi2.biWidth = bmp2.bmWidth;
    bi2.biHeight = bmp2.bmHeight;
    bi2.biPlanes = bmp2.bmPlanes;
    bi2.biBitCount = bmp2.bmBitsPixel;
    bi2.biCompression = bmp2.bmType;
    bi2.biSizeImage = bmp2.bmWidth * bmp2.bmHeight * bmp2.bmBitsPixel / 8;
    bi2.biXPelsPerMeter = 0;
    bi2.biYPelsPerMeter = 0;
    bi2.biClrImportant = 0;
    hDib2 = GlobalAlloc(GHND, bi2.biSizeImage);
    l
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值