62,620
社区成员
发帖
与我相关
我的任务
分享
import java.awt.*;
import javax.swing.*;
public class Program
{
public static final int W = 300;
public static final int H = 300;
public static void main(String[] args)
{
JFrame f = new JFrame();
Container cp = f.getContentPane();
JPanel p = new JPanel();
p.setPreferredSize(new Dimension(Program.W,Program.H));
p.setLayout(null);
cp.add(p);
/*RepaintManager.currentManager(f.getRootPane()).setDoubleBufferingEnabled(false);
p.setDebugGraphicsOptions(DebugGraphics.FLASH_OPTION);
DebugGraphics.setFlashTime(2000);
DebugGraphics.setFlashCount(1);*/
//透明的裁减框
TrimBorder tb = new TrimBorder();
tb.setLocation(0,0);
p.add(tb);
//被裁减的图片
PicturePanel picp = new PicturePanel();
picp.setLocation(0,0);
p.add(picp);
f.pack();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
/**
*
* 透明边缘的裁减框
*/
class TrimBorder extends JPanel
{
private final int BORDER_PAD = 50;//边框的大小
public TrimBorder()
{
super();
this.setOpaque(false);
this.setSize(Program.W,Program.H);
}
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.BLACK);
g.drawRect(BORDER_PAD, BORDER_PAD, Program.W - BORDER_PAD * 2, Program.H - BORDER_PAD * 2);
g.setColor(new Color(0,0,0,100));
g.fillRect(0, 0, Program.W, BORDER_PAD);//顶边框
g.fillRect(0, Program.H - BORDER_PAD, Program.W, BORDER_PAD);//底边框
g.fillRect(0, BORDER_PAD, BORDER_PAD, Program.H - BORDER_PAD * 2);//左边框
g.fillRect(Program.W - BORDER_PAD, BORDER_PAD, BORDER_PAD, Program.H - BORDER_PAD * 2);//右边框
}
}
/**
* 被裁减的图片
*/
class PicturePanel extends JPanel
{
public PicturePanel()
{
super();
this.setSize(Program.W,Program.H);
}
public void paint(Graphics g)
{
super.paint(g);
g.drawImage(Toolkit.getDefaultToolkit().getImage("D:\\1.jpg"), 0, 0, Program.W, Program.H, this);
}
}