java swing rectangle,javaSE swing生成图片中,clearRect()方法的使用疑惑解决思路
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()方法的使用疑惑解决思路相关推荐
- 博为峰Java技术文章 ——JavaSE Swing FlowLayout布局管理器I
2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 这种布局管理器的策略也非常简单,它是按照控件加入的先后顺序从左到右排列,一行排满了,再换下一行,然后在从左到 ...
- 博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理
2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 在JList类中有addListSelectionListener()方法,可以检测用户是否对JList的选 ...
- 博为峰Java技术文章 ——JavaSE Swing JPanel III
2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 上篇文章程序实例中,建立了6个面板容器类,分别是contentPane.p1.p2.p3.p4. p5,其中 ...
- java组合框的事件有哪些_博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理...
博为峰小博老师: 在JList类中有addListSelectionListener()方法,可以检测用户是否对JList的选取有任何的改变.在ListSelectionListener接口中只定义一 ...
- 博为峰Java技术文章 ——JavaSE Swing 如何使用进度条组件JProgressBarⅡ
2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 使用构造器JProgressBar(int orient)来创建进度条.其具体的实例代码如下: public ...
- Web Service 简单实例(java 版本) ,IDE自动生成客户端代码方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.客户端工程 jar 包 : 二.1. 服务端:( new 一个web service pro ...
- Java 算法合并 Geoserver 切片生成指北针图片:高效、优雅解决地图数据可视化问题
实现逻辑: 安装 Java 开发环境和 GeoTools 库.GeoTools 是一个 Java 库,可以用于处理和操作地理空间数据.可以从 GeoTools 的官网上下载最新版本的库,然后将其添加到 ...
- GPT2文本生成有问题?这里有些潜在解决思路
作者 | Leo Gao 译者 | 凯隐 编辑 | 夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]在过去的一年中,人们对文本生成模型的兴趣重新燃起,这在很大程度上要归功于GPT ...
- 【菜鸟】java.net.URISyntaxException: Expected scheme-specific part at index 10: localhost: 报错解决思路
检查链接是否有http://前缀
最新文章
- 【OpenCv】Cannot parallelize deblocking type 1, decoding such frames in sequential order
- 第四范式先知平台成为首个通过金融信创适配验证的AI产品
- java调用android_Java及Android中常用链式调用写法简单示例
- html标签的pre语义,HTML pre 标签
- java 获取mysql路径_如何使用JPQL收集MySQL基本路径?
- win7计算机找不到脚本文件夹,win7系统开机出现无法找到脚本文件怎么办
- pooleddb mysql_使用dbutils的PooledDB连接池,操作数据库
- Codeforces 1174E Ehab and the Expected GCD Problem
- 解决Weblogic与Hibernate的jar冲突
- bash的操作环境及环境设定
- java基础面经--下
- 弘辽科技:拼多多这样提升销量才能加权
- Unity VR(PicoVR)
- Stata:异质性空间自回归模型(HSAR)-hetsar
- 三星手机 qq上通过我的设备我的android上传到手机的东西,两个手机怎么互传文件?...
- Junit、Json和kv结构的相互转化
- 二维数组的认识及其表示元素的两种方式
- 人在回路的数据准备技术研究进展
- “在 System.Threading.ThreadAbortException 中第一次偶然出现的‘mscorlib.dll’类型的异常”的解决方法
- 信息学奥赛系列教程:高精度计算
热门文章
- code push 常用命令
- 微信创建小程序引入vantUI步骤
- 系统架构概念及思想1
- mac 使用常用快捷键
- 离线缓存html5,HTML5新技术 离线缓存
- Java多线程编程-(6)-两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier
- php 监控nginx日志文件,Nginx 日志分析及实时监控
- vcode(visual studio code)中文配置
- 第5次作业练习题(第五章:总线与接口、中断、DMA)
- Codeforces Gym 101158E Infallibly Crack Perplexing Cryptarithm Gym [语法分析]