CRect::IntersectRect的功能


BOOL IntersectRect( LPCRECT lpRect1, LPCRECT lpRect2) throw();

功能:判断两个矩形有intersection(交集)

参数:两个都是指向RECT结构体/CRect对象的指针

返回值:两个矩形有交集(相交)返回TRUE,反之FALSE

在MFC(Microsoft Foundation Classes)中,图表列表控件(CListCtrl)通常用于显示数据集,并可以自定义其外观,包括背景。若想设置透明背景图片,你可以按照以下步骤操作: 1. 首先,准备一张透明PNG或ICO格式的图片作为背景。透明图需要有Alpha通道支持。 2. 创建一个CImage对象并加载透明图片,代码示例如下: ```cpp CBitmap bitmap; HBITMAP hBitmap = (HBITMAP)::LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(RIDICON_YOUR_BACKGROUND_IMAGE)); bitmap.Attach(hBitmap); ``` 这里`RIDICON_YOUR_BACKGROUND_IMAGE`应该替换为你实际图片资源的标识符。 3. 将CImage转换为HBITMAP: ```cpp hBitmap = bitmap.Detach(); ``` 4. 设置CListCtrl的背景: ```cpp CRect rect; GetClientRect(listCtrl, rect); // 获取列表框的客户区大小 listCtrl.SetBkColor(RGB(0, 0, 0)); // 设置黑色背景,便于透明图片展现 listCtrl.SetExtendedStyle(LVS_EX_TRANSPARENT | LVS_EX_SUBITEMIMAGES); // 添加透明和子项图像的支持 listCtrl.SetBackgroundBitmap(bitmap); // 设置背景图片 ``` 5. 如果你想让背景只覆盖部分区域,可以在绘制前设置剪贴区域(ClipRect): ```cpp CRect clipRect = ...; // 自定义剪切区域 listCtrl.CalcItem(itemIndex, &rect); listCtrl.SetClipRect(rect.IntersectRect(&clipRect)); // 针对指定项设置剪切区域 listCtrl.DrawItem(itemIndex, CDIS_SELECTED | CDIS_FOCUS | CDIS_SELECTED, NULL, &rect); listCtrl.SetClipRect(CRect()); // 恢复默认剪切区域 ``` 完成上述步骤后,图表列表控件将使用你设置的透明背景图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值