У меня есть этот хороший метод мало библиотек, я использую много ...
public static void applyQualityRenderingHints(Graphics2D g2d) {
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
}
Я настоятельно рекомендую вам иметь Поиграй со значениями и посмотреть, что сработает для вас.
Первое, что вам не следует делать, это применить к копии Graphics
, которую вы не создали в первую очередь. Это важно, так как Graphics
общий ресурс, который используется всеми компонентами в окне, поэтому внесение изменений в нее может привести к неожиданным результатам
Это означает, что это ...
bru1=(Graphics2D)jPanel1.getGraphics();
будет проблемой , но не только для этого ответа. getGraphics
не так, как покрасочные работы, кроме удалось вернуть null
, ничего вы рисуете на него можно протирать в следующий раз цикл paint происходит
Посмотрите на Painting in AWT and Swing и Performing Custom Painting для получения более подробной информации о том, как картина должна быть сделанный.
Тогда, как только вы правильно для этого, то ваш метод paintComponent
может выглядеть примерно так ...
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
applyQualityRenderingHints(g2d);
// Do your custom painting here
g2d.dispose();
}