在Java中,当需要画一些特殊的形状时,比如说椭圆、矩形等,可以使用 Graphics2D 来绘图。
一些API:
g.drawLine(3,3,50,50);//画一条线段 g.drawRect(80,100,40,25);//画线框 g.drawOval(10,10,60,120);//画椭圆 //画多边形 int px1[]={50,90,10,50};//首末点相重,才能画多边形 int py1[]={10,50,50,10}; g.setColor(Color.blue); g.fillPolygon(px1,py1,4);
关于画图的更多内容,可以参考网上的一些介绍,或者官方API。
Graphics2D 对象中有个函数是 translate(x,y),该函数的功能如下:
将椭圆的原点移动到 (x,y)。
该函数和 rotate函数结合使用,可以实现将一个图形绕一个点旋转。
g2.rotate(Math.PI * rotate / 180.0); //注意该函数是绕着椭圆的原点旋转
比如说,将一个水平的椭圆绕着椭圆的中心点旋转一个角度,需要先将椭圆的原点移动到一个位置,然后再绕着新的原点旋转,示意图如下:
新原点的坐标可以根据水平状态下原点的坐标以及旋转的角度算出来。需要注意的是:先移动原点,然后再旋转,顺序不能乱。
示例代码:
Graphics2D g2 = (Graphics2D)g.create(); g2.setColor(Color.red); g2.translate(translateX, translateY); g2.rotate(Math.PI * rotate / 180.0); g2.drawOval(0, 0, ovalWidth - 1, ovalHeight - 1); g2.translate(-translateX, -translateY); g2.dispose();