En tant que projet favori, j'ai joué avec le concept de l'intégration des effets Aero Glass dans mon application SWT. Łukasz Milewski has an excellent blog post expliquant comment cela peut être accompli, ce qui se résume assez bien à ceci:Combinaison d'effets Aero Glass et SWT
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();
}
}
Cela fonctionne à merveille, jusqu'à ce que vous voulez ajouter un contrôle. Il en résulte transparent reste noir:
A follow-up post montre comment faire, aussi, mais nécessite de modifier la bibliothèque de SWT. (Au moins, je crois, car les fonctions SWT privées sont remplacées par @Override
.)
Comment puis-je éviter que les contrôles deviennent transparents? Encore mieux: comment puis-je bénéficier de la transparence (par exemple en plaçant des images dessus like so), mais l'utiliser de manière sensée? Mettez votre contrôle au-delà de la zone vitrée ou essayez d'utiliser la force Couleur de fond pour le contrôle
Pouvez-vous ajouter des liens vivants? – Supuhstar