5

私は、テキストを回転させるためのオンラインの例から適応された次のコードを持っています。コードはテキストを正しい角度に回転させるという点で問題なく機能しますが、回転したテキストの精度と鮮明さを向上させる方法があるかどうかを知りたいと思います。私のディスプレイでは、回転したテキストが滑らかではなく「階段状」になっているように見えます。

PFont f;
String message = "abcdefghijklmnopqrstuvwxyz";
float theta, x;

void setup() {
  size(800, 200);
  f = createFont("Arial",20,true);
}

void draw() { 
 // background(255);
  fill(0);
  textFont(f);    // Set the font
  translate(x,height/2);  // Translate to the center
  rotate(theta);                // Rotate by theta
  textAlign(LEFT);            
  text(message,0,0);            
  theta += 0.1;                // Increase rotation
  x += textWidth(message);
  if (x>800){noLoop(); }
}

違いを表示しやすくするために、例を修正しました。新しいコードでは、テキストをアンダースコアの文字列に変更し、参照線も赤で描画しました。それがあなたのマシンで同じように機能する場合、下線によって作成された黒い線に驚異的なものが見られるはずです。

String message = "________";
float theta, x;
PFont f;

void setup() {
  size(800, 200);
  f = loadFont("ArialMT-20.vlw");
  smooth();
}

void draw() { 
  fill(0);
  textFont(f);    // Set the font

  translate(x,height/2);  // Translate to the center
  rotate(theta);                // Rotate by theta

  text(message,0,0);

  stroke(255,0,0);
  strokeWeight(2);
  line(0,0,textWidth(message),0);

  theta += 0.1;                // Increase rotation
  x += textWidth(message);
  if (x>800){noLoop(); }
}

私にとっては次の出力が得られますが、Macで実行するとこれが異なることはわかっています。

ここに画像の説明を入力してください

4

2 に答える 2

1

微調整してみてくださいRenderingHints

于 2012-09-20T16:20:08.520 に答える
0

これを行う 1 つの方法は、テキスト (回転されていない) を BufferedImage にプロットしてから、画像を回転することです。このようなもの:

BufferedImage buff = getGraphicsConfiguration().createCompatibleImage(textWidth, textHeight); //create an image with the dimensions of the text
Graphics2D g2d = buff.createGraphics();
g2d.drawString(yourText); //draw the text without transformations
g2d.dispose();

//apply the rotation transform to g, the Graphics from your component
g.drawImage(buff, textPosX, textPosY, null); //there you go
于 2012-09-20T16:21:38.930 に答える