java 矩形公章_Java使用Graphics2D生成公章

Graphics2D

根据API上的说法是,在使用Graphics2D类库的时候,这是进行操作的主要类,类似于提供了一种context。Graphics2D为抽象类,继承自Graphics类,所以在操作前,需要先获取一种可以操作的对象,然后再创建Graphics2D对象。

Graphics2D可以支持三种操作:图形操作(画各种图形,填充)、写文字、变换(比如旋转、切割等)BufferedImage bi = new BufferedImage(canvasWidth, canvasHeight, BufferedImage.TYPE_INT_ARGB);//创建了bufferedImage对象,可以在最后保存为图片

Graphics2D g2d = bi.createGraphics();//创建Graphics2D对象

填充

填充图形时,首先要设置画笔,然后调用g2d对象的fill函数,如g2d.setPaint(Color.WHITE);//设置画笔颜色

g2d.fillRect(0, 0, canvasWidth, canvasWidth);//填充区域,将区域背景设置为白色

除了fillRect外,还有很多其他填充方法,还有fill(Shape s),因此基本可以满足大多数需求。

画圆

再画圆的时候,首先要生成一个Shape对象,然后调用g2d.draw(shape)即可,因此,这里面如何生成Shape对象就很重要了。

可以看一下Shape类结构,shape是一个接口类,实现了众多实现类,比如Arc(弧度)、贝塞尔曲线、椭圆、线等等。这里我们要使用Arc,既然可以生成弧度,那么当然就可以生成圆。g2d.setPaint(Color.red);//设置画笔

g2d.setStroke(new BasicStroke(5));//设置画笔的粗度

Shape circle = new Arc2D.Double(0,0,circleRadius*2,circleRadius*2,0,360,Arc2D.OPEN);//构造圆形,Arc2D为抽象类,Arc2D.double和Arc2D.float为它的具体实现类。

g2d.draw(circle);//OK,现在已经有了一个圆

画线

我们需要的是距离圆心上下等距的两条线。所以,这里我们要知道距离有多远,或者说线段的顶点与圆心的连线,如下图所示,这个夹角的大小,我称为lineArc(注意必须是弧度),根据这个角,我们就得到了上线段的两个顶点(radius-radius*sin(α),radius-radius*cos(α)),(radius+radius*sin(α),radius-radius*cos(α)),同理下线段的两个顶点也知道了。再然后调用drawLine即可,如果需要更改颜色,或者更改画笔,随时都可以通过set来更改。

58ee7b8cc3719f39cfe3b8f9908cfaf2.pngdouble halfHeight = circleRadius * (Math.cos(lineArc));

double halfWidth = circleRadius * (Math.sin(lineArc));

g2d.drawLine((int)(circleRadius-halfWidth),(int)(circleRadius-halfHeight),(int)(circleRadius+halfWidth),(int)(circleRadius-halfHeight));//

g2d.drawLine((int)(circleRadius-halfWidth),(int)(circleRadius+halfHeight),(int)(circleRadius+halfWidth),(int)(circleRadius+halfHeight)

写字

写字看起来最简单,直接调用g2d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值