日期:2014-05-20  浏览次数:20788 次

java怎么将一个图像画到一个指定的圆形区域呢?
图一



图二



上图中图一为原图,现给定素材,需要将图像画城图二然后输出。现在问题是,
给定的图像都是矩形,怎么将矩形的图片画到中间的那两个圆里面呢?

------解决方案--------------------
重写
 paintComponent(Graphics g)
g.setColor(Color.BLACK);
g.fillOval(x + 10, y - 10, 10, 10);
这花出来的应该是一个黑色球,至于具体的,当然,这感觉比较复杂。。
或者你可以定义为矩形的JPanel,但是里面放的图片是带有透明色的圆形,这样是不会遮盖其它的组件的。
------解决方案--------------------
还没整过这么复杂的

------解决方案--------------------
锯齿应该都会存在的,毕竟不死矢量图,比较折中的办法死把圈圈旁边的内容虚化
------解决方案--------------------
提高分辨率可以抗锯齿的
------解决方案--------------------
说下思路:先画某个图片(矩形);再画圆;然后将圆外的部分画成别的(覆盖已有的部分图片)
------解决方案--------------------
引用:
锯齿应该都会存在的,毕竟不死矢量图,比较折中的办法死把圈圈旁边的内容虚化


+1
------解决方案--------------------
试了一下,做了个小DEMO



链接: http://download.csdn.net/detail/raistlic/5054386
------解决方案--------------------
代码很简陋,还是贴出来吧,模糊用了第三方库 jhlabs 的高斯模糊



import com.jhlabs.image.GaussianFilter;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;


/**
 *
 * @date   05/02/2013
 */
public class Demo extends JPanel {
  
  public static void main(String[] args) {
    
    SwingUtilities.invokeLater(new Runnable() {

      @Override
      public void run() {
        
        JFrame f = new JFrame("Test");
        f.setContentPane(new Demo());
        f.pack();
        f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
      }
    });
  }
  
  private BufferedImage image;
  private Image small;
  private Point loc;
  private int halfScaledSize;
  Demo() {
    
    try {