主题:绘制曲线
little_jew
[专家分:50] 发布于 2008-04-11 19:46:00
拖动鼠标,根据鼠标轨迹画一条曲线,就像window xp中画图板那样。
回复列表 (共3个回复)
沙发
飞侠 [专家分:1380] 发布于 2008-04-12 04:28:00
调用鼠标事件 捕捉鼠标位置(如getLocationOnScreen()之类的) 画线
主要就是利用MouseEvent
可查看JDK文档
板凳
little_jew [专家分:50] 发布于 2008-04-14 20:21:00
可否提供一些代码
3 楼
zcs179895723 [专家分:330] 发布于 2008-04-16 18:40:00
if(line)//画直线
{ if(pressed&&dragged)
{ g.setColor(frocolor);
g.drawLine(begin.x,begin.y,move.x,move.y);
g.setColor(bacolor);
g.drawLine(begin.x,begin.y,cover.x,cover.y);
cover.x=move.x;
cover.y=move.y;
}
if(pressed&&released)
{ g.setColor(frocolor);
g.drawLine(begin.x,begin.y,end.x,end.y);
released=false;
dragged=false;
}
start=false;
}
if(rec)//画矩形
{ //g.setColor(frocolor);
if(pressed&&dragged)
{ //g.setColor(frocolor);
//g.drawRect(Math.min(begin.x,move.x),Math.min(begin.y,move.y),Math.abs(begin.x-move.x),Math.abs(begin.y-move.y));
g.setColor(bacolor);
g.drawRect(cover.x,cover.y,cow,coh);
cover.x=Math.min(begin.x,move.x);
cover.y=Math.min(begin.y,move.y);
cow=Math.abs(begin.x-move.x);
coh=Math.abs(begin.y-move.y);
g.setColor(frocolor);
g.drawRect(Math.min(begin.x,move.x),Math.min(begin.y,move.y),Math.abs(begin.x-move.x),Math.abs(begin.y-move.y));
dragged=false;
}
if(pressed&&released)
{ g.drawRect(Math.min(begin.x,end.x),Math.min(begin.y,end.y),Math.abs(begin.x-end.x),Math.abs(begin.y-end.y));
released=false;
dragged=false;
}
start=false;
}
if(cir)//画圆
{
if(pressed&&dragged)
{ g.setColor(frocolor);
int r=(int)Math.sqrt((double)((begin.x-move.x)*(begin.x-move.x)+(begin.y-move.y)*(begin.y-move.y)));
g.drawOval((begin.x-r),(begin.y-r),2*r,2*r);
g.setColor(bacolor);
g.drawOval(cover.x,cover.y,cor,cor);
cover.x=begin.x-r;
cover.y=begin.y-r;
cor=2*r;
}
if(pressed&&released)
{ g.setColor(frocolor);
int r=(int)Math.sqrt((double)((begin.x-end.x)*(begin.x-end.x)+(begin.y-end.y)*(begin.y-end.y)));
g.drawOval((begin.x-r),(begin.y-r),2*r,2*r);
released=false;
dragged=false;
}
start=false;
}
我来回复