图一
图二
上图中图一为原图,现给定素材,需要将图像画城图二然后输出。现在问题是,
给定的图像都是矩形,怎么将矩形的图片画到中间的那两个圆里面呢?
------解决方案--------------------
重写
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 {