MFC—显示NX图标或透明背景图标

news/2024/11/28 21:42:45/

注意:只针对32位带alpha通道的BMP!

第一种方法(显示小图标不清晰):

	//加载位图CImage sourceImage;sourceImage.LoadFromResource(AfxGetInstanceHandle(), IDB_BMP_NX);//新建位图CImage showImage;showImage.Create(sourceImage.GetWidth(), sourceImage.GetHeight(), 32, CImage::createAlphaChannel);//转换数据if (sourceImage.GetBPP() == 32) //确认该图像包含Alpha通道 ,即改图片是否是32位像素{for (int i = 0; i < sourceImage.GetWidth(); i++){for (int j = 0; j < sourceImage.GetHeight(); j++){byte* pByte = (byte*)sourceImage.GetPixelAddress(i, j);byte* pByte2 = (byte*)showImage.GetPixelAddress(i, j);if (pByte[3] < 255)//alpha通道值{pByte2[0] = (pByte[0] * pByte[3] + 127) / 255;pByte2[1] = (pByte[1] * pByte[3] + 127) / 255;pByte2[2] = (pByte[2] * pByte[3] + 127) / 255;pByte2[3] = pByte[3];}else{pByte2[0] = pByte[0];pByte2[1] = pByte[1];pByte2[2] = pByte[2];pByte2[3] = pByte[3];}}}}//显示位图showImage.Draw(dc.GetSafeHdc(), 0, 0, sourceImage.GetWidth(), sourceImage.GetHeight(), 0, 0, showImage.GetWidth(), showImage.GetHeight());

第二种方法(推荐:小图显示清晰细腻):

	//关联DCGraphics graphics(dc.m_hDC);//加载位图HBITMAP hbmp = (HBITMAP)::LoadImage(GetModuleHandle(NULL),"C:\\Users\\HP\\Desktop\\replace_part.8s.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);//获取位图数据BITMAP bm;GetObject(hbmp, sizeof(bm), &bm);BYTE* source = (BYTE*)bm.bmBits;//新建32位带alpha通道的BitmapBitmap bitmap(bm.bmWidth, bm.bmHeight, PixelFormat32bppARGB);//拷贝位图数据Gdiplus::BitmapData datas;Gdiplus::Rect rc(0, 0, bm.bmWidth, bm.bmHeight);bitmap.LockBits(&rc, ImageLockModeWrite, PixelFormat32bppARGB, &datas);byte* dest = (byte*)(datas.Scan0);for (int i = 0; i < bm.bmHeight; i++){memcpy(dest + (i * bm.bmWidthBytes),source + ((bm.bmHeight - i - 1) * bm.bmWidthBytes), bm.bmWidthBytes);}bitmap.UnlockBits(&datas);//绘制位图graphics.DrawImage(&bitmap, 0, 0);//删除资源DeleteObject(hbmp);

 


http://www.ppmy.cn/news/459505.html

相关文章

UG NX二次开发(C#)-同步建模-删除倒圆(圆角)

删除UG NX模型的圆角代码如下: public static void ClearBlend(Face []edgeBlendFaces){NXOpen.Session theSession = NXOpen.Session.GetSession();NXOpen

Xavier NX安装opencv4.4 with cuda

具体操作参考 在编译openc_contrib时可能会报错&#xff0c;提示缺少boostdesc_bgm.i文件 缺少文件的路径如是:opencv-4.4.0/.cache/xfeatures2d/ 我们需要手动下载对应的文件并添加进去&#xff0c;这里提供对应文件的网盘链接&#xff1a; 链接&#xff1a;https://pan.bai…

Jetson Xavier NX 源码安装Cmake

前言 一般情况下 Jetpack安装下来的时候 &#xff0c; 是自带cmake的 -version 3.10 安装 检查环境配置 sudo apt-get install gccsudo apt-get install gsudo apt-get install make源码安装 直接在Cmake官网下载源码包 官网下载链接 解压在相应文件夹&#xff0c; 博主解…

UG NX 12 过滤选取

选择条 可以利用选择条中的过滤工具进行选取。 1.选取面。在选择过滤器中将过滤选项设置为面&#xff0c;然后依次选取3个面&#xff0c;选中的面高亮显示&#xff0c;如图2-10所示。 RE 直接在工具栏中选取过滤器“面”类型进行过滤时&#xff0c;只能选取面&#xff0c;不能…

NVIDIA Jetson NX 控制GPIO

目录 前言运行引脚图片 前言 看到一些博客说需要pip安装Jetson.GPIO 以及通过下面命令设置用户权限 sudo groupadd -f -r gpio sudo usermod -a -G gpio your_user_name然后需要将源下载到Jetson.GPIO&#xff1a; sudo cp lib/python/Jetson/GPIO/99-gpio.rules /etc/udev…

ug二次开发python_NXOpen二次开发.pdf

NXOpen二次开发 NXOpen 二次开发 二○一三年十二月 目 录 第一章 NXOpen 简介1 1.1 NX API 简介1 1.1.1 NX API 架构与统一对象模型1 1.1.2 现有 NX API 1 1.1.3 NX API 比较1 1.2 NXOPEN 概述3 1.2.1 NXOPEN 特性3 1.2.2 NXOpen API 应用程序层次框架 3 1.2.3 Block Styled UI…

在jetson xavier nx上制作docker镜像

概览&#xff1a; 一、docker简介二、在jetson xavier nx上制作docker镜像 一、docker简介 用途&#xff1a;对于一项工程&#xff0c;不同的机器都需要单独为其配置环境&#xff0c;且有时配环境是一件相当麻烦的事情。那么&#xff0c;有没有一种方法可以把工程代码和其所需的…

C#与欧姆龙NX系列PLC通讯

由于项目需要C#跟欧姆龙NX系列PLC通讯&#xff0c;网上百度NX系列的PLC这方面的案例很少&#xff0c;且NXPLC不支持Fins通信&#xff0c;也不支持OPCUA.只能通过Ethernet/IP与其进行通信 采用CX-Compolet控件 先上图片&#xff1a; 实现核心代码 using System; using Syst…