javaSE swing生成图片中,clearRect()方法的使用疑惑

我在写图片的时候,遇到了点问题,请看我的demo:

public class One {

public static void main(String[] args) throws IOException {

One one = new One();

one.createImage();

}

public void createImage() throws IOException{

File file = new File("C:/1.jpg");

int width = 200 ;

int height= 200 ;

BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);

Graphics2D g2 = (Graphics2D)bi.getGraphics();

/*问题位置*/g2.setBackground(Color.red);

/*问题位置*/g2.clearRect(0, 0, width, height);

Rectangle2D rect = new Rectangle2D.Double(0, 0, width, height);

Ellipse2D raduis = new Ellipse2D.Double();

raduis.setFrameFromCenter(width/2, height/2, 0, 0);

g2.draw(raduis);

g2.draw(rect);

ImageIO.write(bi, "jpg", file);

}

}

在创建图片后,图片是预想中呈红色的 。

-------------------

但是,请看上面代码中12和13行的:

g2.setBackground(Color.red);

g2.clearRect(0, 0, width, height);

发现问题:

1:这两句的顺序换掉,则图片就变成了默认的黑色。

2:把clearRect()去掉,图片也呈黑色。

问题:

显然,我对clearRect的处理不当导致问题,

但是,我想问问,为什么我只是去掉了clearRect或者改变了clearRect/setBackgorund的顺序,

图片就自动变回默认的黑色呢???

------解决方案--------------------

you did not set the painter,do it before you are going to draw something in canvas.

------解决方案--------------------

Graphics2D g2 = bi.createGraphics();

g2.setPainter(Color.WIHTE);

g2.fillRect(0, 0, width, height);

g2.setPainter(Color.RED);

Rectangle2D rect = new Rectangle2D.Double(0, 0, width, height);

Ellipse2D raduis = new Ellipse2D.Double();

raduis.setFrameFromCenter(width/2, height/2, 0, 0);

g2.draw(raduis);

g2.draw(rect);

g2.dispose();

------解决方案--------------------

fill与draw的区别

fill会填充几何形状, draw会绘制几何形状

如果你是想绘制一个几个几何形状当然用draw

如果你是想将一个几何形状填充成指定颜色用fill

这个是在所有编程语言的图形API都通用的,纯科普

下次先google再发问!

java swing rectangle,javaSE swing生成图片中,clearRect()方法的使用疑惑解决思路相关推荐

  1. 博为峰Java技术文章 ——JavaSE Swing FlowLayout布局管理器I

    2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 这种布局管理器的策略也非常简单,它是按照控件加入的先后顺序从左到右排列,一行排满了,再换下一行,然后在从左到 ...

  2. 博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理

    2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 在JList类中有addListSelectionListener()方法,可以检测用户是否对JList的选 ...

  3. 博为峰Java技术文章 ——JavaSE Swing JPanel III

    2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 上篇文章程序实例中,建立了6个面板容器类,分别是contentPane.p1.p2.p3.p4. p5,其中 ...

  4. java组合框的事件有哪些_博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理...

    博为峰小博老师: 在JList类中有addListSelectionListener()方法,可以检测用户是否对JList的选取有任何的改变.在ListSelectionListener接口中只定义一 ...

  5. 博为峰Java技术文章 ——JavaSE Swing 如何使用进度条组件JProgressBarⅡ

    2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 使用构造器JProgressBar(int orient)来创建进度条.其具体的实例代码如下: public ...

  6. Web Service 简单实例(java 版本) ,IDE自动生成客户端代码方法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.客户端工程 jar 包 : 二.1.  服务端:( new 一个web  service pro ...

  7. Java 算法合并 Geoserver 切片生成指北针图片:高效、优雅解决地图数据可视化问题

    实现逻辑: 安装 Java 开发环境和 GeoTools 库.GeoTools 是一个 Java 库,可以用于处理和操作地理空间数据.可以从 GeoTools 的官网上下载最新版本的库,然后将其添加到 ...

  8. GPT2文本生成有问题?这里有些潜在解决思路

    作者 | Leo Gao 译者 | 凯隐 编辑 | 夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]在过去的一年中,人们对文本生成模型的兴趣重新燃起,这在很大程度上要归功于GPT ...

  9. 【菜鸟】java.net.URISyntaxException: Expected scheme-specific part at index 10: localhost: 报错解决思路

    检查链接是否有http://前缀

最新文章

  1. 【OpenCv】Cannot parallelize deblocking type 1, decoding such frames in sequential order
  2. 第四范式先知平台成为首个通过金融信创适配验证的AI产品
  3. java调用android_Java及Android中常用链式调用写法简单示例
  4. html标签的pre语义,HTML pre 标签
  5. java 获取mysql路径_如何使用JPQL收集MySQL基本路径?
  6. win7计算机找不到脚本文件夹,win7系统开机出现无法找到脚本文件怎么办
  7. pooleddb mysql_使用dbutils的PooledDB连接池,操作数据库
  8. Codeforces 1174E Ehab and the Expected GCD Problem
  9. 解决Weblogic与Hibernate的jar冲突
  10. bash的操作环境及环境设定
  11. java基础面经--下
  12. 弘辽科技:拼多多这样提升销量才能加权
  13. Unity VR(PicoVR)
  14. Stata:异质性空间自回归模型(HSAR)-hetsar
  15. 三星手机 qq上通过我的设备我的android上传到手机的东西,两个手机怎么互传文件?...
  16. Junit、Json和kv结构的相互转化
  17. 二维数组的认识及其表示元素的两种方式
  18. 人在回路的数据准备技术研究进展
  19. “在 System.Threading.ThreadAbortException 中第一次偶然出现的‘mscorlib.dll’类型的异常”的解决方法
  20. 信息学奥赛系列教程:高精度计算

热门文章

  1. code push 常用命令
  2. 微信创建小程序引入vantUI步骤
  3. 系统架构概念及思想1
  4. mac 使用常用快捷键
  5. 离线缓存html5,HTML5新技术 离线缓存
  6. Java多线程编程-(6)-两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier
  7. php 监控nginx日志文件,Nginx 日志分析及实时监控
  8. vcode(visual studio code)中文配置
  9. 第5次作业练习题(第五章:总线与接口、中断、DMA)
  10. Codeforces Gym 101158E Infallibly Crack Perplexing Cryptarithm Gym [语法分析]