微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

结合航空玻璃效果和SWT

作为一个宠物项目,我一直在玩将Aero Glass特效整合到我的SWT应用程序中的概念。 ŁukaszMilewski有一篇出色的博客文章解释了如何完成这个工作,这可以归结为以下几点:

final display display = new display(); final Shell shell = new Shell(display); shell.setLayout(new Formlayout()); final MARGINS margins = new MARGINS(); margins.cyTopHeight = -1; final Composite c = new Composite(shell,SWT.norMAL); c.setBackground(new Color(shell.getdisplay(),new RGB(0,0))); final FormData fd = new FormData(); fd.top = new FormAttachment(0,0); fd.left = new FormAttachment(0,0); fd.right = new FormAttachment(100,0); fd.bottom = new FormAttachment(100,0); c.setLayoutData(fd); OS.DwmExtendFrameIntoClientArea(shell.handle,margins); shell.open(); while (!shell.isdisposed()) { if (!display.readAnddispatch()) { display.sleep(); } }

这工作很好,直到你想添加一个控件。 这导致黑色保持透明:

后续的post也演示了如何做到这一点,但需要修改SWT库。 (至less,我相信是这样,因为私有的SWT函数被覆盖@Override 。)

如何在Windows上安装Numpy for Python 2.7?

启用和禁用USB端口

开始C ++的问题; 不能实例化抽象类(VS中的C2259)

应用程序正在阻止Windowsclosures

在Windows中修改framebuffer

我怎样才能避免控制变得透明? 更好的是:我怎样才能从透明度中受益(例如像这样放置图像),但是以合理的方式使用它?

如何摆脱我的PC应用程序中的UAC警告

如何使用ffmpeg,这样就不需要在应用程序文件夹中包含它的dll了?

如何使用C#禁用鼠标点击事件系统?

数组的PHP语法:PHP版本之间的不同行为

文件删除时出错

重写的方法是“封装私有”。 为了在没有编译时错误的情况下覆盖它们,你必须把你的类放到与超类相同的包中,比如org.eclipse.swt org.eclipse.swt.widgets包。 你引用的博客最后提到了这个实现细节,所以我不知道,这真的回答你的问题。

把你的控制超出玻璃区域,或尝试使用强制背景颜色的控制。

您担心覆盖内部方法解决方案,但您首先使用的是内部SWT类。 这似乎是一个非常hacky脆弱的方式(至少在目前的SWT实施)添加一些眼睛糖果到您的应用程序…我希望你没有这样做的生产代码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐