抗锯齿JWindow(形状)



我的应用程序中有一个JWindow,它在右上角弹出。我已经将形状设置为RoundRectangle2D,但是JWindow的边界没有反锯齿,因此看起来很糟糕。我的问题是,如何反混叠一个JWindow?我知道如何使用图形抗混叠形状,但这并不适用于JWindow本身,是吗?无论如何,我如何反混叠我的JWindow的边界?

代码:

公共类选择器实现接口{

//Variables
//Windows
    static JWindow Frame = new JWindow();
    static JWindow[] Label = new JWindow[100];
    static Shape Shape;
    static JWindow ExitWindow = new JWindow();
    static JWindow MenuWindowHide = new JWindow();
public static void initialize() {
    //Settings
    Frame.setBounds(0,0,(int)Utility.getScreenRes().getWidth(),(int)Utility.getScreenRes().getHeight());
    Frame.setOpacity(0.4f);

    ExitWindow.setBounds((int) (Utility.getScreenRes().getWidth() - 40), 25,20,20);
    ExitWindow.getContentPane().setBackground(Color.DARK_GRAY);
    ExitWindow.setShape(new RoundRectangle2D.Double(0,0,20,20, 6, 6));
    //Post settings
    Frame.setVisible(true);
    ExitWindow.setVisible(true);
}

}

要做到这一点,我将展示如何使用任何形状的抗锯齿JFrame。

public class MainFrame extends JFrame
{
public MainFrame()
{
    setUndecorated(true);
    setBackground(new Color(0,255,0,0));
    setSize(300, 300);
    add(PaintingSurface); //Where PaintingSurface is JPanel with PaintPanel method below
    setVisible(true);
}

然后添加与Frame大小相同的JPanel,并在其paint方法中使用以下方法绘制您想要的形状

public void PaintPanel(Graphics g,Shape PaintArea)
{
    Graphics2D gg = (Graphics2D) g;
    gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,  RenderingHints.VALUE_ANTIALIAS_ON);
    gg.fill(PaintArea);
}   

相关内容

  • 没有找到相关文章

最新更新