Java绘图备忘

来源:互联网 发布:光良 右手边 知乎 编辑:程序博客网 时间:2024/06/04 18:20

1.要时刻还原画笔原来的状态

如调整颜色后要还原原来的画笔颜色:

public void paint(Graphics g) {Color c = g.getColor();g.setColor(Color.YELLOW);........g.setColor(c);}


2.双缓冲

先把图画画在一张图片上,再把图片整体画出来,就不会有闪烁的现象了

public void update(Graphics g) {if(offScreenImage == null) {offScreenImage = this.createImage(WINDOW_WIDTH, WINDOW_HEIGHT);}Graphics gOffScreen = offScreenImage.getGraphics();Color c = gOffScreen.getColor();gOffScreen.setColor(getBackground());gOffScreen.fillRect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);//画一个满屏幕的矩形是为了覆盖前面所画过的图案gOffScreen.setColor(c);paint(gOffScreen);g.drawImage(offScreenImage, 0, 0, null);}

3.调整画笔线条的粗细

用到了BasicStoke类

public void paint(Graphics g) {Graphics2D g2d = (Graphics2D) g;Stroke s = g2d.getStroke();g2d.setStroke(new BasicStroke(2.0f));//括号里的就是线条的粗细.......g2d.setStroke(s);//还原原来的粗细}


4.平滑曲线

一句话消锯齿

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING , RenderingHints.VALUE_ANTIALIAS_ON);//消锯齿


5.自动换行画字符串
 /** * 自动换行画字符串 */void printStringAutoChangeLine(String s, Graphics2D g2d, int x, int y) {int i = 0, sWidth = 0, width = 0, height = 0;FontMetrics fm = getFontMetrics(g2d.getFont());height = fm.getHeight();sWidth = fm.stringWidth(s);if(sWidth >= windowWidth - x) {for(i=s.length()-1;i>=0;i--) {width = fm.stringWidth(s.substring(0,i));if(width < windowWidth - x) break;}printStringAutoChangeLine(s.substring(i),g2d,x,y+height);printStringAutoChangeLine(s.substring(0, i-1),g2d,x,y);} else {g2d.drawString(s, x, y);}}


原创粉丝点击