我知道如何创建一个半透明的窗口,但为了完整起见,我将其包括在内 现在这就是我想要做的......
参考上图,您可以看到边缘清晰且定义明确。我想让它们变得柔软
我可以使用AWTUtilities.setWindowShape(Window,Shape)
给出形状,但我想知道如何创建圆角矩形。
你为什么不使用Photoshop?你可能会问,但要想创建一个你想尝试用作背景的每个图像的反映是很繁琐的。相反,我想知道是否有一种编程方式:
BufferedImage
JFrame
的尺寸设为原始缓冲图片的两倍
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import javax.swing.*;
public class ImageReflection extends JFrame{
public ImageReflection(){
ImageIcon baseIcon = new ImageIcon("src/images/mentalist-logo.png");
ImageIcon reflectIcon = new ImageIcon("src/images/mentalist-logo.png");
JLabel baseLabel = new JLabel(baseIcon);
JLabel reflectLabel = new JLabel();
Graphics2D g2D = (Graphics2D) reflectIcon.getImage().getGraphics();
g2D.rotate(180);
reflectLabel.setIcon(reflectIcon);
this.add(reflectLabel);
this.setVisible(true);
this.pack();
}
public static void main(String[] args) {
new ImageReflection();
}
}
我在UnsupportedOperationException
得到Graphics2D g2D = (Graphics2D) reflectIcon.getImage().getGraphics();
这是我的代码,可以将图像颠倒过来。
答案 0 :(得分:3)
剩下的就是创造一个反思。
您可以像这样更改图形上下文AffineTransform
:
BufferedImage newImage = new BufferedImage(
oldImage.getWidth(), oldImage.getHeight, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = newImage.createGraphics();
g2d.translate(0, newImage.getHeight());
g2d.scale(1, -1);
g2d.drawImage(oldImage, 0, 0, null);
g2d.dispose();
答案 1 :(得分:2)
可能你可以尝试这样的事情(如果不是全部可能会有所帮助),这就是我之前尝试过的事情:
final JWindow initWindow = new JWindow();
SwingWorker<Object, Object> task = new SwingWorker<Object, Object>()
{
public Object doInBackground()
{
//show init window
//....
initWindow.getContentPane().add(text);
( (JComponent) initWindow.getContentPane ( ) ).setBorder(new CompoundBorder(new CustomRoundedBorder(), new LineBorder(new Color(...)));
AWTUtilities.setWindowOpaque ( initWindow, false );
initWindow.setAlwaysOnTop(true);
initWindow.setVisible(true);
//....
return null;
}
public void done()
{
}
};
task.execute();