2)在上面的程序基础上继续,绘制图形 以下提示假设g2为Graphics2D对象。 1)绘制文字【粉红色(Color.PINK),粗体(Font.BOLD),字体为”Arial”,大小为36,坐 标位置为(200,50)】使用g2.setPaint()设置颜色,使用g2.setFont()设置字体,使用g2.drawString() 绘制字符串。 2)绘制椭圆并填充【绿色(Color.GREEN),其外接矩形左上角坐标(100,100),大小为 (600,300)】创建Ellipse2D对象,使用g2.setPaint()设置颜色,使用g2.draw()绘制Ellipse2D对 象,使用g2.fill()填充Ellipse2D对象。 3)绘制矩形并填充【蓝色(Color.GREEN),左上角坐标(150,200),大小为(200,100)】 与上一小题类似,只是换成了Rectangle2D对象。 4)使用绘制矩形的两条对角线【黑色(Color.BLACK),两条对角线分开画,每一条起点 和终点坐标根据矩形位置和大小计算】。创建Line2D对象,使用g2.setPaint()设置颜色,使 用g2.draw()绘制。 5)绘制圆形【红色(Color.RED),其外接矩形左上角坐标(450,150),大小为(200,200)】 与2)中的椭圆类似,只是把椭圆Ellipse2D对象的宽和高设置为相同,就是圆了。 6)每隔π/4弧度,绘制圆形中的半径线。【黑色(Color.BLACK),每一条半径起点为圆 心(550,250),半径为100。半径终点的坐标为(圆心x坐标+半径*cos(θ),圆心y坐标+半径 *sin(θ)),其中θ为该条半径转过的弧度】。可以用for(弧度......){创建半径线段Line2D对象; 调用g2.draw()绘制半径;}来完成。
时间: 2024-03-13 19:47:40 浏览: 138
好的,以下是绘制图形的代码,您可以参考一下:
```
import java.awt.*;
import java.awt.geom.*;
public class DrawShapes extends Frame {
public static void main(String[] args) {
new DrawShapes();
}
public DrawShapes() {
super("Draw Shapes");
setSize(800, 600);
setVisible(true);
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
// 绘制文字
g2.setPaint(Color.PINK);
g2.setFont(new Font("Arial", Font.BOLD, 36));
g2.drawString("Hello World!", 200, 50);
// 绘制椭圆并填充
g2.setPaint(Color.GREEN);
Ellipse2D ellipse = new Ellipse2D.Double(100, 100, 600, 300);
g2.draw(ellipse);
g2.fill(ellipse);
// 绘制矩形并填充
g2.setPaint(Color.BLUE);
Rectangle2D rectangle = new Rectangle2D.Double(150, 200, 200, 100);
g2.draw(rectangle);
g2.fill(rectangle);
// 绘制矩形的两条对角线
g2.setPaint(Color.BLACK);
Line2D line1 = new Line2D.Double(150, 200, 350, 300);
Line2D line2 = new Line2D.Double(350, 200, 150, 300);
g2.draw(line1);
g2.draw(line2);
// 绘制圆形
g2.setPaint(Color.RED);
Ellipse2D circle = new Ellipse2D.Double(450, 150, 200, 200);
g2.draw(circle);
g2.fill(circle);
// 绘制圆形中的半径线
g2.setPaint(Color.BLACK);
double centerX = 550;
double centerY = 250;
double radius = 100;
for (double theta = 0; theta < Math.PI * 2; theta += Math.PI / 4) {
double endX = centerX + radius * Math.cos(theta);
double endY = centerY + radius * Math.sin(theta);
Line2D radiusLine = new Line2D.Double(centerX, centerY, endX, endY);
g2.draw(radiusLine);
}
}
}
```
阅读全文