CxImage实现多图层半透明混合显示

本文介绍如何利用CxImage库实现类似Photoshop的多图层显示,并且探讨了图层的透明度混合效果。作者通过自我探索,成功实现了这一功能,并分享了其实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前一直想尝试类似于PS的图层管理,特别是让图层以一定的透明度混合显示的效果。当时觉得自己写太麻烦,就放弃了,现在既然有了CxImage,就很想尝试能否用CxImage来实现这个效果。在网上搜索,没见到相关的说明,最后折腾了好久,才自己尝试出来,现在写出来分享一下。

#include "stdafx.h"
//获取文件后缀名所需要的库
BOOL CCxImageMFCDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
	if (!CDocument::OnOpenDocument(lpszPathName))
		return FALSE;

	// TODO:  在此添加您专用的创建代码
	//m_ximage是一个CxImage的对象
	char drive[MAX_LENGTH],dir[MAX_LENGTH],fname[MAX_LENGTH],ext[MAX_LENGTH];
	_splitpath(lpszPathName,drive,dir,fname,ext);
	//网上很多获取后缀名是自己写的字符串处理,但是我还是觉得提供的库更好用
	uint32_t uImgType= CxImage::GetTypeIdFromName(ext);
	//CxImage通过后缀名获取类型
	m_ximage.LayerCreate();
	//首先要创建图层,在创建图层时就动态创建了一个CxImage,详情可见源代码
	CxImage * pImageLayer=m_ximage.GetLayer(-1);
	//-1代表获取最后一个图层,也就是最新获取的,这里获得指针
	pImageLayer->Load(lpszPathName,uImgType);
	//用这个图层打开图像
	if (pImageLayer->IsValid(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值