Graphics2D が持っている java.awt.RenderingHints の初期設定内容について調べてみる。
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.util.Iterator;
import java.util.Set;
public class RenderingHintsTest{
public static void main(String[] args){
printCurrentRenderingHints();
printRenderingHintList();
}
// Graphics2D での RenderingHints の初期設定値を調べる
private static void printCurrentRenderingHints(){
BufferedImage image =
new BufferedImage(100,100,BufferedImage.TYPE_INT_ARGB);
Graphics2D g = image.createGraphics();
System.out.println("----- CurrentRenderingHints begin -----");
RenderingHints rh = g.getRenderingHints();
Set rhset = rh.keySet();
for(Iterator rhi = rhset.iterator(); rhi.hasNext();){
RenderingHints.Key rhk = (RenderingHints.Key)rhi.next();
Object rhv = rh.get(rhk);
System.out.println(rhk + "=" + rhv);
}
System.out.println("----- CurrentRenderingHints end -----");
System.out.println("");
}
// RenderingHints のヒントキーとヒント値の文字列表現を調べる
private static void printRenderingHintList(){
System.out.println("----- RenderingHintList begin -----");
System.out.println("");
System.out.println("KEY_ALPHA_INTERPOLATION="
+ RenderingHints.KEY_ALPHA_INTERPOLATION);
System.out.println("VALUE_ALPHA_INTERPOLATION_DEFAULT="
+ RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT);
System.out.println("VALUE_ALPHA_INTERPOLATION_QUALITY="
+ RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
System.out.println("VALUE_ALPHA_INTERPOLATION_SPEED="
+ RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);
System.out.println("");
System.out.println("KEY_ANTIALIASING="
+ RenderingHints.KEY_ANTIALIASING);
System.out.println("VALUE_ANTIALIAS_DEFAULT="
+ RenderingHints.VALUE_ANTIALIAS_DEFAULT);
System.out.println("VALUE_ANTIALIAS_OFF="
+ RenderingHints.VALUE_ANTIALIAS_OFF);
System.out.println("VALUE_ANTIALIAS_ON="
+ RenderingHints.VALUE_ANTIALIAS_ON);
System.out.println("");
System.out.println("KEY_COLOR_RENDERING="
+ RenderingHints.KEY_COLOR_RENDERING);
System.out.println("VALUE_COLOR_RENDER_DEFAULT="
+ RenderingHints.VALUE_COLOR_RENDER_DEFAULT);
System.out.println("VALUE_COLOR_RENDER_QUALITY="
+ RenderingHints.VALUE_COLOR_RENDER_QUALITY);
System.out.println("VALUE_COLOR_RENDER_SPEED="
+ RenderingHints.VALUE_COLOR_RENDER_SPEED);
System.out.println("");
System.out.println("KEY_DITHERING="
+ RenderingHints.KEY_DITHERING);
System.out.println("VALUE_DITHER_DEFAULT="
+ RenderingHints.VALUE_DITHER_DEFAULT);
System.out.println("VALUE_DITHER_DISABLE="
+ RenderingHints.VALUE_DITHER_DISABLE);
System.out.println("VALUE_DITHER_ENABLE="
+ RenderingHints.VALUE_DITHER_ENABLE);
System.out.println("");
System.out.println("KEY_FRACTIONALMETRICS="
+ RenderingHints.KEY_FRACTIONALMETRICS);
System.out.println("VALUE_FRACTIONALMETRICS_DEFAULT="
+ RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT);
System.out.println("VALUE_FRACTIONALMETRICS_OFF="
+ RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
System.out.println("VALUE_FRACTIONALMETRICS_ON="
+ RenderingHints.VALUE_FRACTIONALMETRICS_ON);
System.out.println("");
System.out.println("KEY_INTERPOLATION="
+ RenderingHints.KEY_INTERPOLATION);
System.out.println("VALUE_INTERPOLATION_BICUBIC="
+ RenderingHints.VALUE_INTERPOLATION_BICUBIC);
System.out.println("VALUE_INTERPOLATION_BILINEAR="
+ RenderingHints.VALUE_INTERPOLATION_BILINEAR);
System.out.println("VALUE_INTERPOLATION_NEAREST_NEIGHBOR="
+ RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
System.out.println("");
System.out.println("KEY_RENDERING="
+ RenderingHints.KEY_RENDERING);
System.out.println("VALUE_RENDER_DEFAULT="
+ RenderingHints.VALUE_RENDER_DEFAULT);
System.out.println("VALUE_RENDER_QUALITY="
+ RenderingHints.VALUE_RENDER_QUALITY);
System.out.println("VALUE_RENDER_SPEED="
+ RenderingHints.VALUE_RENDER_SPEED);
System.out.println("");
System.out.println("KEY_STROKE_CONTROL="
+ RenderingHints.KEY_STROKE_CONTROL);
System.out.println("VALUE_STROKE_DEFAULT="
+ RenderingHints.VALUE_STROKE_DEFAULT);
System.out.println("VALUE_STROKE_NORMALIZE="
+ RenderingHints.VALUE_STROKE_NORMALIZE);
System.out.println("VALUE_STROKE_PURE="
+ RenderingHints.VALUE_STROKE_PURE);
System.out.println("");
System.out.println("KEY_TEXT_ANTIALIASING="
+ RenderingHints.KEY_TEXT_ANTIALIASING);
System.out.println("VALUE_TEXT_ANTIALIAS_DEFAULT="
+ RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);
System.out.println("VALUE_TEXT_ANTIALIAS_OFF="
+ RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
System.out.println("VALUE_TEXT_ANTIALIAS_ON="
+ RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
System.out.println("");
System.out.println("----- RenderingHintList end -----");
}
}
次の3つの環境で上記のコードを実行して調査。
- Windows 2000 Service Pack 4 JDK1.4.2_07
- Windows 2000 Service Pack 4 JDK 1.5.0_02
- GNU/Linux 3.1 jdk1.4.2_07
以下、上記コードを実行した際の出力結果。3つとも同様の結果になった。
----- CurrentRenderingHints begin -----
Fractional metrics enable key=Integer text metrics mode
Global antialiasing enable key=Nonantialiased rendering mode
Global rendering quality key=Default rendering methods
Stroke normalization control key=Default stroke normalization
Text-specific antialiasing enable key=Default antialiasing text mode
----- CurrentRenderingHints end -----
----- RenderingHintList begin -----
KEY_ALPHA_INTERPOLATION=Alpha blending interpolation method key
VALUE_ALPHA_INTERPOLATION_DEFAULT=Default alpha blending methods
VALUE_ALPHA_INTERPOLATION_QUALITY=Highest quality alpha blending methods
VALUE_ALPHA_INTERPOLATION_SPEED=Fastest alpha blending methods
KEY_ANTIALIASING=Global antialiasing enable key
VALUE_ANTIALIAS_DEFAULT=Default antialiasing rendering mode
VALUE_ANTIALIAS_OFF=Nonantialiased rendering mode
VALUE_ANTIALIAS_ON=Antialiased rendering mode
KEY_COLOR_RENDERING=Color rendering quality key
VALUE_COLOR_RENDER_DEFAULT=Default color rendering mode
VALUE_COLOR_RENDER_QUALITY=Highest quality color rendering mode
VALUE_COLOR_RENDER_SPEED=Fastest color rendering mode
KEY_DITHERING=Dithering quality key
VALUE_DITHER_DEFAULT=Default dithering mode
VALUE_DITHER_DISABLE=Nondithered rendering mode
VALUE_DITHER_ENABLE=Dithered rendering mode
KEY_FRACTIONALMETRICS=Fractional metrics enable key
VALUE_FRACTIONALMETRICS_DEFAULT=Default fractional text metrics mode
VALUE_FRACTIONALMETRICS_OFF=Integer text metrics mode
VALUE_FRACTIONALMETRICS_ON=Fractional text metrics mode
KEY_INTERPOLATION=Image interpolation method key
VALUE_INTERPOLATION_BICUBIC=Bicubic image interpolation mode
VALUE_INTERPOLATION_BILINEAR=Bilinear image interpolation mode
VALUE_INTERPOLATION_NEAREST_NEIGHBOR=Nearest Neighbor image interpolation mode
KEY_RENDERING=Global rendering quality key
VALUE_RENDER_DEFAULT=Default rendering methods
VALUE_RENDER_QUALITY=Highest quality rendering methods
VALUE_RENDER_SPEED=Fastest rendering methods
KEY_STROKE_CONTROL=Stroke normalization control key
VALUE_STROKE_DEFAULT=Default stroke normalization
VALUE_STROKE_NORMALIZE=Normalize strokes for consistent rendering
VALUE_STROKE_PURE=Pure stroke conversion for accurate paths
KEY_TEXT_ANTIALIASING=Text-specific antialiasing enable key
VALUE_TEXT_ANTIALIAS_DEFAULT=Default antialiasing text mode
VALUE_TEXT_ANTIALIAS_OFF=Nonantialiased text mode
VALUE_TEXT_ANTIALIAS_ON=Antialiased text mode
----- RenderingHintList end -----
出力結果から、初期設定値をフィールド名にて置き換えたものは以下の通り。
KEY_FRACTIONALMETRICS = VALUE_FRACTIONALMETRICS_OFF
KEY_ANTIALIASING = VALUE_ANTIALIAS_OFF
KEY_RENDERING = VALUE_RENDER_DEFAULT
KEY_STROKE_CONTROL = VALUE_STROKE_DEFAULT
KEY_TEXT_ANTIALIASING = VALUE_TEXT_ANTIALIAS_DEFAULT
教訓: 横に長いソースコードはHTMLに貼るべきでない。インデントが空白1文字だとけっこうツライ。
tags: zlashdot Java Java
Posted by NI-Lab. (@nilab)