【问题标题】:Delphi cutting glass德尔福切割玻璃
【发布时间】:2012-02-16 20:51:29
【问题描述】:

我正在使用 Delphi XE2,我喜欢玻璃效果,我想像在 Windows 7 平板电脑工具中一样“切割”玻璃。 如果你也知道如何剪一个按钮,如果你告诉我怎么做,我会很高兴。

谢谢

【问题讨论】:

  • 是的,@Lama,这就是我想做的。你知道怎么做吗?
  • @Astervista,不,但我会尝试找出它,因为这是一个有趣的问题,而且它已经在我的收藏夹中了 :) OT,here's 一篇关于桌面窗口管理器及其一些功能的有趣读物,但我认为那里没有你的问题的答案(这就是为什么 OT :)
  • 我无法打开链接,@TLama。为什么?
  • 抱歉,我今天发布链接很糟糕。这个在我作为评论链接发布的时候已经修改了(不知道为什么,但你可以自己尝试一下:)所以这里是通过TinyURL
  • 碰巧有一个坏的链接日(BLD)。

标签: delphi aero-glass


【解决方案1】:

在顶部区域绘图只需使用玻璃框架并在非客户区域绘图,或者使用 DwmExtendFrameIntoClientArea API。

我见过的最好的代码示例是 VCL“Ribbon”控件,它提供了一个“QAT”(快速访问工具栏)区域,绘制在“非客户区”中。

请注意,作者不仅要考虑在Vista/Win7 系统开启Glass 时如何渲染,还要决定在主题引擎关闭时如何在WinXp、Win7 和Vista 上渲染。 Vcl.Ribbon.pas(或者如果您在 XE 或更早版本中,则只是 Ribbon.pas)单元中有相当多的逻辑专门用于此。

查看 Vcl 功能区源中的 procedure TCustomRibbonQuickAccessPopupToolbar.NCPaint(DC: HDC);

绘制一个从底部突出的非矩形“扩展区域”可能是应用自定义窗口剪辑区域的问题。

【讨论】:

  • 但是你必须自己画出发光的边缘,不是吗?如果是这样,那么问题是如何?
  • 如果您遵循现代技术,则不会。我相信 daven 的回答会将您链接到其中的那一部分,请参阅此处有关 SetWindowRgn 和透明颜色值的 cmets:stackoverflow.com/questions/3572342/irregularly-shaped-forms
  • 任何例子都能解释一千多个单词。抱歉,我对此很跛脚,不知道该怎么做。你的意思是使用UpdateLayeredWindow?这真的有用吗?
  • OP 提出了不止一个问题,因此,没有一个代码示例可以帮助您。您的个人问题基本上是重复的。当这个问题已经有链接到这些例子时,我研究这样一个使用受限的问题毫无意义。非客户端绘制代码非常困难,我只能建议研究 Ribbon.pas,这是 Delphi 附带的闭源商业代码,不能合法地发布在任何地方。
【解决方案2】:

你的意思是你想要成形的形式吗?如果是这样

Irregularly shaped forms

可以提供帮助。我想这将适用于 Windows 7(请注意 Remy 在答案中的评论)。

【讨论】:

    猜你喜欢
    • 2012-01-03
    • 2012-02-03
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2011-10-04
    相关资源
    最近更新 更多