2009-04-19 7 views
0

Ich versuche, ein Overlay mit einem Vista Aero Glass-ähnlichen Hintergrund anstelle eines normalen Fensters zu erstellen. Ein Teil meiner Antwort scheint here zu sein, aber ich frage mich, wie man in Swing/AWT einen Unschärfe-Effekt bekommt. This sieht aus wie ein Start:Vista Glasrand-Effekt in Java Swing/AWT

public BufferedImage processImage(BufferedImage image) { 
    float[] blurMatrix = { 1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f, 1.0f/ 
      9.0f, 1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f }; 
    BufferedImageOp blurFilter = new ConvolveOp(new Kernel(3, 3, blurMatrix), 
      ConvolveOp.EDGE_NO_OP, null); 
    return blurFilter.filter(image, null); 
} 

... aber ich würde wirklich ein enges Spiel bekommen zu. Es scheint, der Prozess sein sollte:

  1. Blur das Hintergrundbild
  2. übermalt mit einem transparenten grauen (oder was auch immer bg Farbe Sie gehen für)
  3. Dann malen undurchsichtigen Fensterinhalt

Wenn ich das richtig verstanden habe, könnte ich die Aero Fensterrahmen Schatten werfen.

Bin ich auf dem richtigen Weg? Wie genau sollte ich die Unschärfe machen, um das gleiche Aussehen zu bekommen? Vielleicht hat jemand dieses Problem schon gelöst? (Als Referenz öffnen Sie das Vista-Startmenü und sehen Sie auf der rechten Seite nach.)

Antwort

1

Ich habe keine Lösung zur Hand, aber Sie können definitiv eine Farbe in die Unschärfe-Stufe überlagern. Alles, was Sie jemals über Swing-Effekte und Swing-Bildeffekte wissen müssen, ist in der ausgezeichneten Filthy Rich Clients. Die Antwort auf Ihre Frage ist definitiv da drin.

In der Tat, wenn Sie in den Beispielen Abschnitt suchen und den Code von Kapitel 8 von dieser Website herunterladen, gibt es Code, um die Unschärfe und Farbton zu tun, die Sie benötigen.

Danke, jT