お気に入りのプロジェクトとして、私は Aero Glass 効果を SWT アプリケーションに統合するという概念を試してきました。Łukasz Milewski は、これをどのように達成できるかを説明する優れたブログ投稿を行っています。
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();
}
}
コントロールを追加するまで、これは美しく機能します。これにより、黒は透明のままになります。
フォローアップ投稿でもこれを行う方法を示していますが、SWT ライブラリを変更する必要があります。(少なくとも、プライベート SWT 関数は でオーバーライドされるため、私はそう信じてい@Override
ます。)
コントロールが透明にならないようにするにはどうすればよいですか? さらに良いことに、透明性の恩恵を受けるにはどうすればよいですか (たとえば、その上に画像を配置するなど)、それを賢明な方法で使用するにはどうすればよいですか?