保存圆形图片的问题 我在做的这个截图程序,我想截圆形图片。画圆的时候有drawoval 可是保存的时候怎么保存圆形图片,如果没有保存圆形图片的功能,我保存一个矩形,圆内切它那现在怎么消除圆之外的像素点呢大神们帮帮忙撒 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 背景透明。 BufferedImage source = ... ; final int width = source.getWidth(); final int height = source.getHeight(); BufferedImage target = new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = target.createGraphics(); g2d.setPaint(new Color(0,0,0,255)); g2d.fillRect(0,0,width,height); Shape shape = new Ellipse2D.Double(0,0,width,height); g2d.clip(shape); g2d.drawImage(source,null,0,0); g2d.dispose(); ImageIO.write(target,"PNG",new File("...")); g2d.setPaint(new Color(0,0,0,255));=> g2d.setPaint(Color.WHITE);上面的代码中图片只有Ellipse2D内部的部分。 如果你已经截取了包含了圆的最小矩形图形,则自己编个程序就可去掉圆以外的部分图形,1. 设最小矩形的左上、右下角坐标分别为(xl,yt)、(xr,yb),2. 根据左上、右下角坐标,找矩形中心坐标:xo=(xl+xr)/2,yo=(yt+yb)/2,3. 显然(xo,yo)就是圆形坐标,而(x2-x1)/2 是圆的半径r,因此4. 从上到下、从左到右搜索矩形每个像素(x,y),当 (x-xo)*(x-xo)+(y-yo)*(y-yo) > r*r 时就是园外点,将此像素改成白色,就行了。 抱歉,第3条应为:3. 显然(xo,yo)就是圆的中心坐标,而(x2-x1)/2 是圆的半径r,因此 将(x,y)点颜色改成白色: canvas.pixels[x,y]:=clwhite; 跪求各位大哥大姐 compaator问题 纠结了我好久 java indexof的问题 java 这个情况怎样正确split [求助]小弟刚刚学程序开发,问个Java难题(对我来说难),希望大哥哥们给与解答 bdk下栽 急求,面向P2P应用的网络行为仿真方法研究与实现。 各位老大,jndi需要的类怎么在我的jdk1.4.0里面找不到呢? 内部类的作用 我的做好的APPLET中有SWING的组件,我在IE中不能显示出来,请告诉我在哪里下载插件? 苦闷!放完假回来不想做事情了! 求wrox的《java网络编程指南》源码 SWT ToolItem 样式问题
final int width = source.getWidth();
final int height = source.getHeight();
BufferedImage target = new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = target.createGraphics();
g2d.setPaint(new Color(0,0,0,255));
g2d.fillRect(0,0,width,height); Shape shape = new Ellipse2D.Double(0,0,width,height);
g2d.clip(shape);
g2d.drawImage(source,null,0,0);
g2d.dispose();
ImageIO.write(target,"PNG",new File("..."));
=> g2d.setPaint(Color.WHITE);上面的代码中图片只有Ellipse2D内部的部分。
1. 设最小矩形的左上、右下角坐标分别为(xl,yt)、(xr,yb),
2. 根据左上、右下角坐标,找矩形中心坐标:xo=(xl+xr)/2,yo=(yt+yb)/2,
3. 显然(xo,yo)就是圆形坐标,而(x2-x1)/2 是圆的半径r,因此
4. 从上到下、从左到右搜索矩形每个像素(x,y),当
(x-xo)*(x-xo)+(y-yo)*(y-yo) > r*r
时就是园外点,将此像素改成白色,就行了。
3. 显然(xo,yo)就是圆的中心坐标,而(x2-x1)/2 是圆的半径r,因此
将(x,y)点颜色改成白色:
canvas.pixels[x,y]:=clwhite;