RenderingHints 類是 Java 2D API 中控制繪圖質量與性能權衡的核心機制。它以鍵值對形式存儲於 Graphics2D 對象中,通過 setRenderingHint(key, value) 方法動態調整抗鋸齒、插值算法、文本渲染等行為。合理配置可顯著提升圖形輸出品質或優化繪圖速度。
| 鍵 | 描述 | 常用值 |
|---|---|---|
KEY_ANTIALIASING |
控制幾何圖形(斜線、曲線)是否啟用抗鋸齒 | VALUE_ANTIALIAS_ON、_OFF、_DEFAULT |
KEY_TEXT_ANTIALIASING |
專門控制文本繪製的抗鋸齒行為 | VALUE_TEXT_ANTIALIAS_ON、_OFF、_DEFAULT、VALUE_TEXT_ANTIALIAS_GASP、LCD_HRGB、LCD_HBGR、LCD_VRGB、LCD_VBGR |
KEY_RENDERING |
整體渲染策略:速度優先或質量優先 | VALUE_RENDERING_SPEED、_QUALITY、_DEFAULT |
KEY_INTERPOLATION |
圖像縮放、旋轉等幾何變換時的像素插值算法 | VALUE_INTERPOLATION_NEAREST_NEIGHBOR(最快)、_BILINEAR、_BICUBIC(最高質量) |
KEY_ALPHA_INTERPOLATION |
Alpha 合成時的插值精度 | VALUE_ALPHA_INTERPOLATION_SPEED、_QUALITY、_DEFAULT |
KEY_COLOR_RENDERING |
色彩轉換與渲染精度 | VALUE_COLOR_RENDER_SPEED、_QUALITY、_DEFAULT |
KEY_DITHERING |
有限調色板下的抖動處理 | VALUE_DITHER_ENABLE、_DISABLE、_DEFAULT |
KEY_FRACTIONALMETRICS |
字體度量是否使用分數精度(影響文本布局精細度) | VALUE_FRACTIONALMETRICS_ON、_OFF、_DEFAULT |
KEY_STROKE_CONTROL |
筆劃路徑的幾何精度控制(Java 6+) | VALUE_STROKE_NORMALIZE、_PURE、_DEFAULT |
Graphics2D g2d = (Graphics2D) image.getGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDERING_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDERING_SPEED);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
setRenderingHint 即時生效。Graphics2D.create() 創建的副本會繼承父對象的所有 RenderingHints,適合局部修改後恢復。_DEFAULT 值由底層圖形管線(如 Windows DirectDraw、Linux X11)決定,跨平台部署時建議顯式指定關鍵項。RenderingHints 是 Java 2D 開發者「質量與性能」平衡的調節閥。理解各鍵的語義、可選值及對視覺結果的實際影響,能讓你在科學繪圖、報表導出、遊戲開發等場景中遊刃有餘。建議在項目啟動時集中配置全局默認值,再在關鍵繪製路徑局部微調。