Visual C++ 7.1Visual C++ 8.0Visual Studio 6Visual C++ 7.0Windows 2003Windows 2000Visual C++ 6.0Windows XPMFC中级开发Visual StudioWindowsC++
使用 CExtWndShadow 实现复合阴影






4.86/5 (14投票s)
2004年7月16日
2分钟阅读

63441

2329
一个 CExtWndShadow 类,应该能够让您轻松地在任何您想要的地方绘制复合阴影。
引言
本文介绍了 CExtWndShadow
类,该类应该能够让您轻松地在任何您想要的地方绘制复合阴影。
该类部分基于免费版本的 Prof-UIS 库中提供的 CExtWndShadow
类,可在 此处 获得。
如何使用
CExtWndShadow
类使用起来很简单。要将其添加到您的项目中,请按照以下步骤操作:
- 将其源文件 (CExtWndShadow.cpp 和 CExtWndShadow.h) 放入相应的文件夹中,并将它们的文件名添加到您的 Visual Studio 项目中。
- 将其头文件包含到适当的头文件中。如果您计划在多个地方使用
CExtWndShadow
,将其添加到 stdafx.h 文件中是合理的。#include "CExtWndShadow.h"
方法描述
bool Paint( CDC & dc, const CRect & rcWndArea, UINT nShadowSize = DEF_SHADOW_SIZE, UINT nBr0 = DEF_BRIGHTNESS_MIN, UINT nBr1 = DEF_BRIGHTNESS_MAX, bool bEnablePhotos = true );
绘制阴影。
参数
CDC & dc
用于绘制阴影的设备上下文的引用。
const CRect & rcWndArea
阴影绘制所在矩形区域的引用。
UINT nShadowSize
阴影的大小(以像素为单位),对于宽度和高度是相同的。
UINT nBr0
阴影的最小亮度,必须在 0 到 10 的范围内。
UINT nBr1
阴影的最大亮度,必须在 0 到 10 的范围内。
bool bEnablePhotos
如果
bEnablePhotos
设置为true
,则指定首先使用阴影算法,然后仅显示图像;否则,每次都使用阴影算法。
返回值
- 成功则为非零值。
用法
例如,如果您想为编辑控件绘制阴影,请使用以下代码
CRect rcEdit; m_Edit.GetWindowRect(&rcEdit); ScreenToClient(&rcEdit); rcEdit.InflateRect( 2, 2, 0, 0 ); // shadow placement adjustment CExtWndShadow _shadow; _shadow.Paint( dcPaint, rcEdit, 5, // shadow size CExtWndShadow::DEF_BRIGHTNESS_MIN, CExtWndShadow::DEF_BRIGHTNESS_MAX, false );
示例
ShadowsTest 示例项目演示了如何将该类应用于一些控件。