65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 CExtWndShadow 实现复合阴影

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (14投票s)

2004年7月16日

2分钟阅读

viewsIcon

63441

downloadIcon

2329

一个 CExtWndShadow 类,应该能够让您轻松地在任何您想要的地方绘制复合阴影。

Sample Image - ExtWndShadow.gif

引言

本文介绍了 CExtWndShadow 类,该类应该能够让您轻松地在任何您想要的地方绘制复合阴影。

该类部分基于免费版本的 Prof-UIS 库中提供的 CExtWndShadow 类,可在 此处 获得。

如何使用

CExtWndShadow 类使用起来很简单。要将其添加到您的项目中,请按照以下步骤操作:

  1. 将其源文件 (CExtWndShadow.cppCExtWndShadow.h) 放入相应的文件夹中,并将它们的文件名添加到您的 Visual Studio 项目中。
  2. 将其头文件包含到适当的头文件中。如果您计划在多个地方使用 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 示例项目演示了如何将该类应用于一些控件。

报告错误

您的问题、建议和错误报告可以发布到下面的论坛或 Prof-UIS 网站上的 论坛

© . All rights reserved.