【问题标题】:How to draw heart using java awt libaray?java - 如何使用java awt库绘制心脏?
【发布时间】:2016-08-24 22:03:43
【问题描述】:

如何使用 java awt libaray 画心?我正在使用 Java AWT Libaray,我需要为我的游戏画一颗心。如何使用 AWT 做到这一点?

这就是我的想法:可以使用g.fillArc()?但是如果我在顶部制作两条曲线而不是如何在按钮处制作三角形?那会是g.fillPolygon()吗?

g.fillArc(x, y, 20,20, 60, 60); //so this will be left curve

g.fillArc(x+20, y, 20,20, 60, 60); //so right curve?

//button triangle?

我想知道是否有人对awt有经验并且可以告诉我如何做到这一点?

【问题讨论】:

    标签: java awt


    【解决方案1】:

    必须为我正在做的事情编写此代码,并且它运行良好。使用图形 g 在 x 和 y 处绘制一个具有指定宽度和高度的三角形。

    // Draw a heart.
    public void drawHeart(Graphics g, int x, int y, int width, int height) {
        int[] triangleX = {
                x - 2*width/18,
                x + width + 2*width/18,
                (x - 2*width/18 + x + width + 2*width/18)/2};
        int[] triangleY = { 
                y + height - 2*height/3, 
                y + height - 2*height/3, 
                y + height };
        g.fillOval(
                x - width/12,
                y, 
                width/2 + width/6, 
                height/2); 
        g.fillOval(
                x + width/2 - width/12,
                y,
                width/2 + width/6,
                height/2);
        g.fillPolygon(triangleX, triangleY, triangleX.length);
    }
    

    【讨论】:

      【解决方案2】:

      //这里的Heart画图其实不需要AWT://

      public static void main(String[] args) {
             int H=7,W=7;
             for(int i=2;i<=(H+1)/2;i++){
      
            for(int j=0;j<W/2-i;j++){
              System.out.print(" ");
             }
          for(int k=1;k<(i+1)*2+1;k++){
          System.out.print("*");
          }
      
          if(i==2){
          System.out.print(" ");
          }
      
          for(int j=0;j<W/2-i+1;j++){
          System.out.print(" ");
          }
      
          for(int k=1;k<(i+1)*2+1;k++){
          if(i==(H+1)/2&&k>i+3)
          System.out.print("");
          else
          System.out.print("*");
          }
          System.out.println();
      
          }
          int HH=17,WW=17;
          for(int i=1;i<=HH/2;i++){
      
          for(int j=1;j<=i;j++){
          System.out.print(" ");
          }
          int z=WW-2*i;
          for(int k=1;k<=z;k++){
          System.out.print("*");
          }
          System.out.println();
       }
      }
      

      }

      【讨论】:

      • 不错的文本实现,但似乎因为问题的作者试图在他的使用 AWT 的游戏中使用形状,所以在 AWT 中绘制它是必要的。
      猜你喜欢
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 2018-09-12
      • 2021-05-23
      • 1970-01-01
      • 2022-01-25
      • 2018-03-21
      • 2012-10-04
      相关资源
      最近更新 更多