A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 珊湖礁 中级黑马   /  2013-12-5 10:43  /  1082 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 珊湖礁 于 2013-12-5 16:51 编辑

我看了一下,java里面的绘图
import java.awt.Graphics;
import java.swing.JApplet;
public class CircleApplet extends JApplet
{
         public void paint(Graphics s)
        {
               for(int i=0;i<=15;i++)
                         s.drawOval(250-2*i,50-2*i,30+4*i,30+4*i);         

          }
}//这个代码可以画一个圆环,我现在想知道用什么方法可以画一个正六边形,请大家各显神通

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

3 个回复

倒序浏览
  1. import java.awt.Graphics;
  2. import java.awt.Graphics2D;
  3. import java.awt.Shape;
  4. import java.awt.geom.Line2D;

  5. import javax.swing.JFrame;

  6. public class nomain extends JFrame
  7. {
  8.         private static final int x=200;
  9.         private static final int y=50;
  10.         private static final int width=300;
  11.         public void drawMyPic()
  12.         {
  13.                 this.setSize(800,600);
  14.                 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  15.                 this.show();
  16.         }
  17.         public void paint(Graphics g)
  18.         {
  19.                 Shape l1=new Line2D.Double(x, y, x+width, y);
  20.                 Shape l2=new Line2D.Double(x+width, y, x+width+width/2, y+(width/2)*Math.sqrt(3));
  21.                 Shape l3=new Line2D.Double(x+width+width/2, y+(width/2)*Math.sqrt(3), x+width, y+2*((width/2)*Math.sqrt(3)));
  22.                 Shape l4=new Line2D.Double( x+width, y+2*((width/2)*Math.sqrt(3)),  x, y+2*((width/2)*Math.sqrt(3)));
  23.                 Shape l5=new Line2D.Double(x, y+2*((width/2)*Math.sqrt(3)),(x-width/2), y+(width/2)*Math.sqrt(3));
  24.                 Shape l6=new Line2D.Double((x-width/2), y+(width/2)*Math.sqrt(3), x, y);
  25.                 Graphics2D gr=(Graphics2D)g;
  26.                 gr.draw(l1);
  27.                 gr.draw(l2);
  28.                 gr.draw(l3);
  29.                 gr.draw(l4);
  30.                 gr.draw(l5);
  31.                 gr.draw(l6);
  32.         }
  33.     public static void main(String[] args)
  34.     {
  35.             nomain m=new nomain();
  36.             m.drawMyPic();
  37.         }
  38. }
复制代码

注意这个画的是标注正六边形,如果显示不是标准正六边形很正常,就算法而言是是六边形

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报 1 0
这是我首次写这些代码以前见都没见过,有点吃力
回复 使用道具 举报
import javax.swing.*;
import java.awt.*;

public class DrawPolygon extends JFrame{
    public DrawPolygon(){
        setTitle("DrawPolygon");
        add(new PolygonsPanel());
    }
   
    public static void main(String [] args){
        DrawPolygon frame = new DrawPolygon();
        frame.setLocationRelativeTo(null);
        frame.setSize(400,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}



class PolygonsPanel extends JPanel{
    protected void paintComponent(Graphics g){
        super.paintComponent(g);
    int xCenter = getWidth()/2;
    int yCenter = getHeight()/2;
    int radius = (int)(Math.min(getWidth(),getHeight())*0.4);
   
    Polygon polygon = new Polygon();
    polygon.addPoint(xCenter + radius ,yCenter);
    polygon.addPoint((int)(xCenter+radius *Math.cos(2*Math.PI/6)),(int)(yCenter-radius *Math.sin(2*Math.PI/6)));
    polygon.addPoint((int)(xCenter+radius*Math.cos(2*2*Math.PI/6)),(int)(yCenter-radius *Math.sin(2*2*Math.PI/6)) );
    polygon.addPoint((int)(xCenter+radius*Math.cos(3*2*Math.PI/6)),(int)(yCenter-radius*Math.sin(3*2*Math.PI/6)));
    polygon.addPoint((int)(xCenter+radius * Math.cos(4*2*Math.PI/6)),(int)(yCenter - radius *Math.sin(4*2*Math.PI/6)));
    polygon.addPoint((int)(xCenter+radius *Math.cos(5*2*Math.PI/6)),(int)(yCenter - radius *Math.sin(5*2*Math.PI/6)));
    g.drawPolygon(polygon);
    }
}

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马