Java 画罗塞塔形状

Java 画罗塞塔形状,java,math,applet,drawing,Java,Math,Applet,Drawing,我必须用draw.oval函数和draw.arc函数来完成这个项目。不过,我真希望我能按你的方式做。这就是我现在拥有的,但它仍然没有正确排列。有什么见解吗?谢谢 //********************************************************************** // Fish.Java Louis Colucci // Draws a rosetta //*********************************************

我必须用draw.oval函数和draw.arc函数来完成这个项目。不过,我真希望我能按你的方式做。这就是我现在拥有的,但它仍然没有正确排列。有什么见解吗?谢谢

//**********************************************************************
// Fish.Java    Louis Colucci
// Draws a rosetta
//**********************************************************************

import javax.swing.JApplet;

import java.awt.*;

public class Rosetta extends JApplet
{
    public void paint (Graphics page)
    {


        setBackground (Color.white);
        page.setColor (Color.black);


        //Draws the body

        page.drawOval(360, 360, 360,360);
        page.drawArc(360,180, 360,360,360,360);
        page.drawArc(360,540, 360,360,360,360);

        page.drawArc(525,435, 360,360,360,360);
        page.drawArc(525,285, 360,360,360,360);
        page.drawArc(195,435, 360,360,360,360);
        page.drawArc(195,285, 360,360,360,360);

    }

}

  • 停止使用幻数,在渲染时使用实际已知值
  • 调用
    super.paint(…)
    ,这是非常非常重要的,如果不这样做,最终会出现图形故障。事实上,使用
    JPanel
    并覆盖其
    paintComponent
    方法,您可以在那里自定义绘制(但不要忘记调用
    super.paintComponent
  • 导入java.awt.Color;
    导入java.awt.Graphics;
    导入java.awt.Graphics2D;
    导入java.awt.geom.AffineTransform;
    导入java.text.NumberFormat;
    导入javax.swing.JApplet;
    公共类Rosetta扩展JApplet{
    公共空间绘制(图形页){
    超级油漆(第页);
    page.setColor(Color.black);
    int width=getWidth();
    int height=getHeight();
    int roseWidth=数学最小值(宽度/2,高度/2);
    int玫瑰高=玫瑰宽;
    int centerX=宽度/2;
    int centerY=高度/2;
    int x=(宽度-玫瑰宽度)/2;
    int y=(高度-玫瑰高度)/2;
    第页drawRect(x、y、玫瑰宽度、玫瑰高度);
    第页绘制椭圆形(x、y、玫瑰宽度、玫瑰高度);
    Graphics2D g2d=(Graphics2D)页面;
    浮动角度=30f;
    仿射变换t=g2d.getTransform();
    变换(仿射变换。getRotateInstance(数学。托拉迪安(角度)、centerX、centerY));
    角度=60f;
    对于(int-index=0;index<6;index++){
    变换(仿射变换。getRotateInstance(数学。托拉迪安(角度)、centerX、centerY));
    g2d.drawArc(x+(玫瑰宽度/2),y,玫瑰宽度,玫瑰高度,360,360);
    }
    g2d.变换(t);
    }
    }
    
    试试这个:

    import javax.swing.JApplet;
    import java.awt.*;
    
    public class Rosetta extends JApplet
    
    {
    
    public void paint(Graphics page)
    
           {
                  final int MID = 130;
                  final int TOP = 75;
    
                  page.drawArc(MID,TOP-76,150,150,210,121);
                  page.drawArc(MID,TOP+76,150,150,30,120);
                  page.drawArc(MID+65,TOP+35,150,150,90,120);
                  page.drawArc(MID-65,TOP+35,150,150,330,120);
                  page.drawArc(MID-65,TOP-35,150,150,270,120);
                  page.drawArc(MID+65,TOP-35,150,150,150,121);
    
                  page.setColor(Color.red);
                  page.drawOval(MID-1,TOP,151,151);
                  }         
    }
    
    import javax.swing.JApplet;
    import java.awt.*;
    
    public class Rosetta extends JApplet
    
    {
    
    public void paint(Graphics page)
    
           {
                  final int MID = 130;
                  final int TOP = 75;
    
                  page.drawArc(MID,TOP-76,150,150,210,121);
                  page.drawArc(MID,TOP+76,150,150,30,120);
                  page.drawArc(MID+65,TOP+35,150,150,90,120);
                  page.drawArc(MID-65,TOP+35,150,150,330,120);
                  page.drawArc(MID-65,TOP-35,150,150,270,120);
                  page.drawArc(MID+65,TOP-35,150,150,150,121);
    
                  page.setColor(Color.red);
                  page.drawOval(MID-1,TOP,151,151);
                  }         
    }