如何实现透明图片的镜像翻转 您所在的位置:网站首页 图像镜面翻转的原理 如何实现透明图片的镜像翻转

如何实现透明图片的镜像翻转

2023-12-12 19:48| 来源: 网络整理| 查看: 265

此处给出的代码改自"详解透明贴图和三元光栅操作 - CodeBus"(https://codebus.cn/yangw/transparent-putimage)

在坐标轴方向为默认的(1,1)的情况下,透明图片可以正常输出

但我想通过坐标轴取反来输出水平翻转的图片,如代码中所示的那样,运行程序后却没有看到任何图像数据(坐标轴取反后透明图片无法正常输出)

#include // EasyX_20190219(beta) #include // 引用该库才能使用 AlphaBlend 函数 #pragma comment( lib, "MSIMG32.LIB") // 半透明贴图函数 // 参数: // dstimg: 目标 IMAGE 对象指针。NULL 表示默认窗体 // x, y: 目标贴图位置 // srcimg: 源 IMAGE 对象指针。NULL 表示默认窗体 void transparentimage(IMAGE *dstimg, int x, int y, IMAGE *srcimg) { HDC dstDC = GetImageHDC(dstimg); HDC srcDC = GetImageHDC(srcimg); int w = srcimg->getwidth(); int h = srcimg->getheight(); // 结构体的第三个成员表示额外的透明度,0 表示全透明,255 表示不透明。 BLENDFUNCTION bf = {AC_SRC_OVER, 0, 255, AC_SRC_ALPHA}; // 使用 Windows GDI 函数实现半透明位图 AlphaBlend(dstDC, x, y, w, h, srcDC, 0, 0, w, h, bf); } // 主函数 int main() { initgraph(600, 400); // 初始化图形窗口 IMAGE src; loadimage(&src, _T("D:\\src4.png")); // 透明贴图 transparentimage(NULL, 120, 0, &src); //水平翻转透明图片 setaspectratio(-1, 1); transparentimage(NULL, 120, 0, &src); setaspectratio(1, 1); // 按任意键退出 _getch(); closegraph(); return 0; }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有