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);//还原原来的粗细}
一句话消锯齿
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);}}
- Java绘图备忘
- Java 备忘
- java备忘
- Java备忘
- java-备忘
- java备忘
- java绘图
- html5 canvas绘图工具开发备忘
- Java 2D备忘
- 读Effective Java 备忘
- JAVA API备忘----集合
- JAVA API备忘----String
- JAVA API备忘----Thread
- java备忘笔记
- java基础备忘
- java高级基础备忘
- 【备忘】JAVA环境变量设置
- java语句备忘
- 详解ASP.NET的内置对象
- 黑马程序员_基础学习笔记(4)
- 东亭路
- 那夜我遥望星空
- CRC校验源码分析
- Java绘图备忘
- nginx版本变化引起的自定义http模块的运行异常
- spring框架的IOC和AOP机制模拟
- jQuery之内容过滤选择器
- oracle中建立job定期运行存储过程总结
- eclipse 软件的背景颜色、字体设置
- php面向对象(关键字 :final self static const)
- ASP.NET十个有效性能优化的方法
- 常用软件开发过程模型比较