java aero_java – 结合Aero Glass效果和SWT

作为一个宠物项目,我一直在玩将Aero Glass效果集成到我的SWT应用程序中的概念.

Łukasz Milewski has an excellent blog post解释了如何实现这一点,这几乎归结为:

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, 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();

}

}

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

A follow-up post也演示了如何执行此操作,但需要修改SWT库. (至少,我相信,因为私有SWT函数被@Override覆盖.)

如何避免控制变得透明?更好的是:我如何从透明度中受益(例如在其上放置图像like so),但是以合理的方式使用它?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值