当前位置: 代码迷 >> Java相关 >> [求助]怎样画任意形状的弧线?
  详细解决方案

[求助]怎样画任意形状的弧线?

热度:349   发布时间:2006-06-18 16:07:32.0
[求助]怎样画任意形状的弧线?
如: Arc2D arc = new Arc2D.Double(point.x, point.y, w, h,0,270,Arc2D.PIE);
我想让终止的角度随鼠标的拖动而随时改变,应该怎样实现?
搜索更多相关的解决方案: 弧线  形状  

----------------解决方案--------------------------------------------------------
把两个鼠标的坐标连线组成的角度计算出来就可以了
做为参数传入
这个时候,必须设定一点为原点,否则的话,就不现实了
----------------解决方案--------------------------------------------------------

能具体一点吗?
我想了很久还是不能实现!谢谢了!


----------------解决方案--------------------------------------------------------
先用鼠标点一下,作为中心,然后用鼠标拖动就可以了
----------------解决方案--------------------------------------------------------
非的用 Arc2D么?
用鼠标作个画笔 岂不是画什么都行?
----------------解决方案--------------------------------------------------------
楼上不鸣则已,一鸣惊人
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
以下是引用aiyuheng在2006-6-19 14:55:08的发言:
非的用 Arc2D么?
用鼠标作个画笔 岂不是画什么都行?

首先谢谢这位仁兄的指点!
小弟是在模拟window的画板编写程序的,所以自由作画小弟已经实现了,只是想有一个画弧的功能!


----------------解决方案--------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
class MyPanel extends JPanel{
private int x1,y1,x2,y2;

public MyPanel()
{
addMouseListener(
new MouseAdapter()
{
public void mousePressed( MouseEvent event )
{
x1=event.getX();
y1=event.getY();
}
public void mouseReleased( MouseEvent event )
{
x2=event.getX();
y2=event.getY();
repaint();
}
}
);
addMouseMotionListener(
new MouseMotionAdapter()
{
public void mouseDragged( MouseEvent event )
{
x2=event.getX();
y2=event.getY();
repaint();
}
}
);
}
public Dimension getPreferredSize()
{
return new Dimension( 800,600 );
}
public void paintComponent( Graphics g )
{
super.paintComponent( g );
Graphics2D g2d = (Graphics2D )g;
g2d.draw( new Arc2D.Double(Math.min(x1,x2),Math.min(y1,y2),
Math.abs(x1-x2),Math.abs(y1-y2),0,270,Arc2D.PIE));
}
}
public class TestMyPanel extends JFrame{
private MyPanel myPanel;
public TestMyPanel()
{
myPanel = new MyPanel();
myPanel.setBackground( Color.YELLOW );

Container container= getContentPane();
container.setLayout( new FlowLayout() );
container.add( myPanel );

setSize( 800,600 );
setVisible( true );
}
public static void main( String args[] )
{
TestMyPanel test= new TestMyPanel();
test.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
----------------解决方案--------------------------------------------------------
  相关解决方案