java实现直线裁剪源码_用Java图形实现内部裁剪

你可以用锥子夹。您需要知道要排除的矩形的边界,以及绘图区域的外部边界。

下面的演示代码打开一个框架,并在其中显示一个面板。面板的绘制方法设置了一个示例剪辑,该剪辑看起来像一个中间有一个矩形孔的矩形,而实际上它是一个描述要排除区域周围区域的多边形。剪辑矩形应该由排除矩形的边界和绘图区域的外边缘组成,但我保留了硬编码的值,以使其保持简单并更好地说明工作(我希望!)

+-------------------+

| clip drawing area |

+---+-----------+ |

| | excluded | |

| | area | |

| +-----------+ |

| |

+-------------------+

该方法的优点在于,它可以避免所有的awt绘制都进入排除区域。我不知道这对你是否有用。

然后我的演示在整个区域绘制一个黑色矩形,并在其中画一条白色的对角线,以说明剪辑的效果。

public class StackOverflow extends JFrame {

public static void main(String[] args) {

new StackOverflow();

}

private StackOverflow() {

setTitle( "Clip with a hole" );

setSize( 320,300 );

getContentPane().add( new ClipPanel() );

setVisible( true );

}

}

class ClipPanel extends JPanel {

@Override

public void paintComponent(Graphics g) {

super.paintComponent(g);

Polygon clip = new Polygon(

new int[]{ 0, 100, 100, 0, 0, 20, 20, 80, 80, 0 },

new int[]{ 0, 0, 60, 60, 20, 20, 40, 40, 20, 20 },

10

);

g.setClip(clip);

g.setColor( Color.BLACK );

g.fillRect( 0,0,100,60 );

g.setColor( Color.WHITE );

g.drawLine( 0,0,100,60 );

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值