有很多(真的很酷)渲染提示!我建议您开始尝试所有这些,然后看看哪种组合可以为您带来预期的效果!
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
@Override
public Dimension getPreferredSize() {
return new Dimension(200,200);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// Remember,graphics is a shared context,when you make changes
// to it,you should also undo them. To this end,we use create/dispose
// which takes a snapshot of the current state and restores it at the
// end.
Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2.setRenderingHint(RenderingHints.KEY_DITHERING,RenderingHints.VALUE_DITHER_ENABLE);
g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,RenderingHints.VALUE_FRACTIONALMETRICS_ON);
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,RenderingHints.VALUE_STROKE_PURE);
g2.setColor(Color.BLACK);
g2.drawLine(0,getWidth(),getHeight());
g2.drawLine(getWidth(),getHeight());
g2.dispose();
}
}
}
警告
g2 = (Graphics2D)getGraphics();
是一个非常非常糟糕的主意,而不是自定义绘画的工作原理。
getGraphics
只不过是上一次绘画过程中最后一次绘画的快照,并且在下一次绘画过程中将无效。
我强烈建议您通读Performing Custom Painting和Painting in AWT and Swing,以更好地了解Swing中的绘画工作原理以及您应该如何使用它。
用鼠标绘图不是一个常见的问题,并且有许多答案。我建议您看看其他一些问题/答案,以了解如何做到这一点并根据您的需要采用它们
本文链接:https://www.f2er.com/2883243.html