+ -
当前位置:首页 → 问答吧 → delphi如何实现这样的界面(控件在标题栏上与窗体按钮并排)

delphi如何实现这样的界面(控件在标题栏上与窗体按钮并排)

时间:2011-12-21

来源:互联网



上面的图片是在win7下的Aero界面,这个标题栏应该是模拟的,但它的窗体按钮是win7下的光晕按钮;不知道这个光晕按钮是怎么做的?

作者: guge8888   发布时间: 2011-12-21

高斯模糊(先绘制文本,利用高斯模糊得到模糊的阴影,然后再在阴影上绘制正常的文本)

系统自带主题绘制方法(DrawThemeTextEx)

作者: DelphiTeacher   发布时间: 2011-12-21

第三方的,spy++看看类名

作者: bdmh   发布时间: 2011-12-21

引用 1 楼 delphiteacher 的回复:
高斯模糊(先绘制文本,利用高斯模糊得到模糊的阴影,然后再在阴影上绘制正常的文本)

系统自带主题绘制方法(DrawThemeTextEx)


请问带光晕的窗体按钮是怎么做的,就是窗体上的‘最大化,最小化,关闭”按钮

作者: guge8888   发布时间: 2011-12-21

Delphi XE2 ,FMX 自带。

作者: chhrsas   发布时间: 2011-12-21

这个,你放的图里,按钮的光晕效果可能是系统自带的

如果需要自己实现,那么就是将自己准备的光晕图片绘制到按钮的区域里,
如果做的皮肤窗体带标题栏的,那么处理起来复杂一点,
要拦截非客户区的鼠标消息和非客户区的绘制消息,重绘按钮所在的区域
如果不带标题栏的,那么直接在客户区的画布上绘制。。



引用 3 楼 guge8888 的回复:

引用 1 楼 delphiteacher 的回复:
高斯模糊(先绘制文本,利用高斯模糊得到模糊的阴影,然后再在阴影上绘制正常的文本)

系统自带主题绘制方法(DrawThemeTextEx)


请问带光晕的窗体按钮是怎么做的,就是窗体上的‘最大化,最小化,关闭”按钮

作者: DelphiTeacher   发布时间: 2011-12-21

引用 5 楼 delphiteacher 的回复:
这个,你放的图里,按钮的光晕效果可能是系统自带的

如果需要自己实现,那么就是将自己准备的光晕图片绘制到按钮的区域里,
如果做的皮肤窗体带标题栏的,那么处理起来复杂一点,
要拦截非客户区的鼠标消息和非客户区的绘制消息,重绘按钮所在的区域
如果不带标题栏的,那么直接在客户区的画布上绘制。。




引用 3 楼 guge8888 的回复:

引用 1 楼 delphiteac……


这个窗体的按钮应该是由系统绘制的,但不知道控件是怎么实现和窗体按钮并排的?

作者: guge8888   发布时间: 2011-12-21



我的意思就是比如这个标签栏控件能否和窗体按钮并列排放?

作者: guge8888   发布时间: 2011-12-21

这个,就是在标题栏上绘制了,
WM_NCPAINT消息是绘制非客户区(标题栏,边框等)
WM_PAINT消息是绘制客户区的

作者: DelphiTeacher   发布时间: 2011-12-21

窗体按钮也是按钮,也可以按钮来代替的。

作者: babydog01   发布时间: 2011-12-21

引用 9 楼 babydog01 的回复:
窗体按钮也是按钮,也可以按钮来代替的。


这个我知道,但我要的是win7下的光晕按钮

作者: guge8888   发布时间: 2011-12-21

引用 8 楼 delphiteacher 的回复:
这个,就是在标题栏上绘制了,
WM_NCPAINT消息是绘制非客户区(标题栏,边框等)
WM_PAINT消息是绘制客户区的


控件要怎么绘制呀?

作者: guge8888   发布时间: 2011-12-21

你的要求我没有写过类似的,应该是可以实现的
基本上也就是将客户区通过 WM_NCCALCSIZE消息扩展为整个窗体大小,然后在上面放置控件即可
不过你放的是一个PageControl的话需要特殊处理,不然会出现与系统按钮重叠或覆盖的情况

引用 7 楼 guge8888 的回复:
我的意思就是比如这个标签栏控件能否和窗体按钮并列排放?

作者: DelphiTeacher   发布时间: 2011-12-21

引用 12 楼 delphiteacher 的回复:
你的要求我没有写过类似的,应该是可以实现的
基本上也就是将客户区通过 WM_NCCALCSIZE消息扩展为整个窗体大小,然后在上面放置控件即可
不过你放的是一个PageControl的话需要特殊处理,不然会出现与系统按钮重叠或覆盖的情况


引用 7 楼 guge8888 的回复:
我的意思就是比如这个标签栏控件能否和窗体按钮并列排放?


看样子这个光晕按钮实现起来还是很麻烦的,我打算放弃了,用Panel来代替标题栏,用图片来做窗体按钮,这样的话,实现起来就容易的多了

作者: guge8888   发布时间: 2011-12-21