我正在寻找良好的资源来学习使用 Win32/GDI API 或任何替代它的内容,以便使用 Win32 API 直接在玻璃窗体上进行绘制和绘制。
当我使用 Delphi 时,我将其标记为 Delphi 或 Visual C++。您能找到的任何代码示例和文章将不胜感激。 MSDN 文章好像没有写这方面的内容。
作为一个目标,让我们假设您想要:
(a) 重现 Google Chrome 的功能(标签作为玻璃框架的一部分)
(b) 重现 MS Office 2010 的功能(在玻璃框架上保存按钮,在 VS 2010 的 MFC 中称为“快速访问工具栏”(见下图)。
我没有使用 MFC,但如果检查 MFC 源代码将是一个很好的信息源,我很想知道 MFC 源代码或 BCG 原始源代码(我都有)中的何处实现了快速访问工具栏渲染/绘画代码。
更新:以下答案之一的相关 neato 链接显示了 NC(非客户端)Paint 消息,以及在玻璃框架上绘画时如何处理它,以及一篇关于它的 MSDN 文章here http://msdn.microsoft.com/en-us/library/bb688195(VS.85).aspx.
这是我的“Glass”书签文件夹的子集,是lot关于该主题的研究/搜索。我发现所有这些对于了解玻璃和解决利用玻璃解决各种问题都很有用。其中大部分都包含 Delphi 代码,但我已经指出了其他语言的代码。
普通玻璃链接
-
在 Delphi 中使用半透明窗口 http://blog.delphi-jedi.net/2008/05/01/translucent-windows-with-aero/:在 Delphi 表单中使用 Glass 的良好介绍(从基础开始)
-
玻璃上的定制绘图 http://delphihaven.wordpress.com/2010/08/19/custom-drawing-on-glass-1/:介绍如何在窗口的玻璃区域上绘制位图或其他图像。也涵盖 Alpha 通道等,很好的概述
-
在 VC++ 项目中使用 glass http://www.codeproject.com/KB/vista/VGGlassIntro.aspx:涵盖打开玻璃、绘制文本、处理通知等 - 很好地介绍了其工作原理。许多底层细节由 VCL 处理(例如GlassFrame 属性 http://docwiki.embarcadero.com/VCL/en/Forms.TForm.GlassFrame和 TForm 内部负责处理很多事情),但是无论如何,了解它在 API 级别如何实现的基础知识是非常有用的
-
如何在非客户区绘图 http://www.codeproject.com/KB/dialog/AeroNonClientAreaButtons.aspx:这展示了如何在标题栏中绘制类似于 Office 工具栏的内容。 .Net 代码,但可翻译
-
设置自定义标题栏 http://delphihaven.wordpress.com/2010/04/19/setting-up-a-custom-titlebar/:关于非客户区绘图的非常详细的文章(在Delphi中,所以Delphi代码)。跟进的是part 2 http://delphihaven.wordpress.com/2010/04/22/setting-up-a-custom-title-bar-reprise/,它演示了完全接管整个窗口并模仿标准标题栏。这两篇文章将让你模仿Office和Chrome正如你在问题中所要求的
-
如何设置各种 VCL 控件以在玻璃区域上发挥最佳作用 http://delphihaven.wordpress.com/2010/07/29/controls-and-glass/:VCL 不能很好地支持玻璃。无论您采取什么措施来尝试解决问题,您都会经常遇到伪影或控件根本无法正确绘制。本文列出了基本的 VCL 视觉组件(标签、按钮、进度条等)以及为每个组件设置的内容,以便它们能够完美绘制,或者至少在将它们放置在玻璃区域上时“尽可能好”
高级的,或切线相关的:
- 桌面合成如何使用 GDI 和 DirectX 表面进行工作 http://blogs.msdn.com/b/greg_schechter/archive/2006/05/02/588934.aspx
-
桌面管理器 API 列表 http://blogs.msdn.com/b/greg_schechter/archive/2006/09/14/753605.aspx(仅部分与航空相关)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)