代码之家  ›  专栏  ›  技术社区  ›  Warren P

为所有Win32程序员绘制Windows Aero Glass(DWM、GDI、GDI+)的文档和API示例

  •  18
  • Warren P  · 技术社区  · 14 年前

    我正在寻找学习使用win32/gdi API或任何替代它的资源,以便使用win32 api直接绘制和绘制玻璃形式。

    当我使用Delphi时,我把它标记为Delphi或Visual C++。如果您能找到任何代码示例和文章,我们将不胜感激。似乎没有写有关这方面的msdn文章。

    作为一个目标,让我们设想一下您希望: (a)复制Google Chrome的功能(标签作为玻璃框的一部分) (b)复制MS Office 2010的功能(玻璃框架上的“保存”按钮,在MFC for VS 2010中称为“快速访问工具栏”(见下图)。

    我没有使用MFC,但是如果检查MFC源是一个很好的信息源,我很好奇知道在MFC源或BCG原始源(两者都有)中的哪里实现了快速访问工具栏呈现/绘制代码。

    更新:下面其中一个答案的相关neato链接显示nc(nonclient)绘制消息,以及在玻璃框架上绘制时如何处理该消息,以及有关它的msdn文章 此处 。n32/gdi apis或任何替代它的东西,直接使用win32 api绘制和绘制玻璃形式。

    当我使用Delphi时,我把它标记为Delphi或Visual C++。如果您能找到任何代码示例和文章,我们将不胜感激。似乎没有写有关这方面的msdn文章。

    作为一个目标,让我们设想一下您希望: (a)复制Google Chrome的功能(标签作为玻璃框的一部分) (b)复制MS Office 2010的功能(玻璃框架上的“保存”按钮,在MFC for VS 2010中称为“快速访问工具栏”(见下图)。

    我没有使用MFC,但是如果检查MFC源是一个很好的信息源,我很好奇知道在MFC源或BCG源(我两者都有)中,哪里实现了快速访问工具栏呈现/绘制代码。

    alt text

    更新:下面其中一个答案的相关neato链接显示了nc(nonclient)绘制消息,以及在玻璃框架上绘制时如何处理该消息,以及一篇有关该消息的msdn文章。 here .

    5 回复  |  直到 11 年前
        1
  •  20
  •   David Mohaimin Moin    14 年前

    这是我的“玻璃”书签文件夹的一个子集,是 许多 关于这个主题的研究/搜索。我发现所有这些对于学习玻璃和解决绘画中的各种问题都很有用。其中大部分包括Delphi代码,但我注意到它在其他语言中的位置。

    普通玻璃连杆

    • Using translucent windows with Delphi :很好的介绍(从最基本的角度)使用Delphi形式的玻璃
    • Custom drawing on glass :介绍如何在窗口的玻璃区域上绘制位图或其他图像。也包括alpha频道等,很好的概述
    • Using glass in a VC++ project :包括打开玻璃、绘制文本、处理通知等——这是一个很好的概述。许多基本的细节都是由VCL处理的(例如 GlassFrame property 而且,tform内部会处理很多这样的问题),但是了解如何在API级别实现它的基础是非常有用的。
    • How to draw on the non-client area :这将显示如何在标题栏中绘制类似Office工具栏的内容。.NET代码,但可翻译
    • Setting up a custom title bar :非常详细的关于非客户区域图的文章(在Delphi中,所以Delphi代码)。跟进 part 2 这表明完全接管整个窗口,并模仿标准标题栏自己。 这两篇文章会让你模仿office和chrome 按照你在问题中的要求
    • How to set up various VCL controls to work best on a glass area :VCL不能很好地支撑玻璃。无论您如何尝试和解决它,通常都会得到工件,或者控件根本无法正确绘制。本文列出了基本的VCL视觉组件(标签、按钮、进度条等)以及为每个组件设置的内容,以便它们能够完美地绘制,或者当它们放置在玻璃区域时至少“尽可能”地绘制。

    高级或切向相关:

        2
  •  6
  •   Community CDub    8 年前

    these posts. on drawing a custom title bar under vista/windows 7 may interest you.

    示例图像:

    posts 在Vista/Windows7下绘制自定义标题栏时,您可能会感兴趣。

    样本图像:

    Sample

        3
  •  5
  •   Philip Rieck    14 年前

    我相信你已经找到了 MSDN page about the DWM . 它跳过了许多主题和一些例子。这里的一些“概述”文章有一些示例(例如 DWM Blur Behind Overview )

    不幸的是,除了文件之外,几乎没有什么好文章。你可以从 Using glass on codeproject 然后看看 detecting glass in delphi -之后,直接使用文档中的函数也不算太差。幸运的是,他们在实践中都是直截了当的。

        4
  •  2
  •   Warren P    13 年前

    玻璃组件的良好网站,包括玻璃按钮:

    http://rmklever.com/

    推荐文章