• 締切済み

oval で真円を描画した場合

はじめまして、marsh といいます。 fillOval で真円を描画した場合、ちらつき防止で public void paint(Graphics g) { update(g); } public void update(Graphics g) { ... for(i = 0; i < 20; i++){ offG.fillOval(i*25, 20, i, i); } ... とやりますよね。 すると、真円にひずみができます。mac では真円のままなのに windows では、なんだか「おにぎり」のようになります。よい回避法はないでしょうか。 細かな点ではありますが、画面の印象がだいぶ変わってしまうのです。 お願いします。 marsh

みんなの回答

noname#30871
noname#30871
回答No.1

 お使いのWindowsマシンのCRTの調整(画面の縦横サイズ)が合っていないのかもしれませんよ。  正方形と、それに内接する真円を描いて確認してみてください。

marsh
質問者

補足

解答、ありがとうございます。 >お使いのWindowsマシンのCRTの調整(画面の縦横サイズ)が合っていない それは、ありません。マックで描画したものをGIFファイルにして、アプレットの下に貼り付けてみましたが、GIFファイルは正常に表示されています。また、質問のところにも書きましたが、 void paint(Graphics g) { で描画したものは歪んでいません。 実験に使ったものは下記のものです。 /* * circles.java 2001/12/26 */ import java.awt.*; public class circles extends java.applet.Applet { Image offscr; Graphics offG; public void init() { } public void paint(Graphics g) { update(g); g.setColor(Color.red); for(int i = 0; i < 20; i++){ g.fillOval(i*25, 40, i, i); } } public void update(Graphics g) { offscr = createImage(500, 100); offG = offscr.getGraphics(); offG.setColor(Color.white); //make background offG.fillRect(0, 0, 500, 100); offG.setColor(Color.blue); for(int i = 0; i < 20; i++){ offG.fillOval(i*25, 20, i, i); } g.drawImage(offscr, 0, 0, this); offG.dispose(); } }

関連するQ&A