2017-11-27 5 views
-2

私はASCIIアートの効果を得ようとしていますが、動作しません。このコードは、文字「VG」の中から「ビジュアル文法」を作成することになっています。エラーがないように見え、出力が表示されますが、文字列は数行しかありません。これはイメージを作成していません。ASCIIアート - コードが正常に動作しない

package visualgrammar; 

import java.awt.Font; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.RenderingHints; 
import java.awt.image.BufferedImage; 

public class Vg { 

public static void main(String[] args) { 
    int width = 150; 
    int height = 30; 

    BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); 
    Graphics a = image.getGraphics(); 
    a.setFont(new Font("SansSerif", Font.BOLD, 24)); 

    Graphics2D a2 = (Graphics2D) a; 
    a2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 
    a2.drawString("VISUAL GRAMMAR", 10, 20); 

    for (int y = 0; y < height; y++) { 
     StringBuilder builder = new StringBuilder(); 

     for (int x = 0; x < width; x++) { 
     builder.append(image.getRGB(x, y) == -16777216 ? "" : "V"); 
} 

     System.out.println(builder); 

    } 
} 
} 
+0

improvemnetのいくつかのアイデアについては、[ASCIIアート変換への画像](https://stackoverflow.com/a/32987834/2521214)をご覧ください – Spektre

答えて

0

今のところ、V文字のみを出力しますが、G文字は出力しません。

だからこれは、はるかに便利なように見えるこの

builder.append(image.getRGB(x, y) == -16777216 ? "G" : "V"); 

にこのライン

builder.append(image.getRGB(x, y) == -16777216 ? "" : "V"); 

を変更する、それが "VISUAL GR" と "A" の半分のように見えます。 これ以上の幅が必要です。 250はちょっといいよね。 int width = 250;

+0

ありがとうございました! – Natiaia

関連する問題