永发信息网

div上、下、左、右边框线上各有一个点,当鼠标在点上按下,并移动,会以所点击的点为起点,画出线段

答案:2  悬赏:0  手机版
解决时间 2021-12-25 15:07
当鼠标出现偏移时,线段变成折线

RT
最佳答案
楼主知道bresenham直线算法不
可以用一个DIV用样式写好作为点,然后通过createElement每次建立一个坐标DIV,然后循环输入开始结束坐标
我这边用CANVAS做了实验是可行的,核心的直线算法如下

function BresenhamLine(startPoint , endPoint , pin){                                     //pin是点的大小
        //Point对象是我自己封装的XY轴坐标
var p ;//决策参数    
var tempX,tempY,tempD;    

var sx  = startPoint.x;    
var sy  = startPoint.y;    
var ex = endPoint.x;    
var ey = endPoint.y;    

var dx =Math.abs(  ex- sx);    
var dy =Math.abs( ey-sy);    

var largeDegree = false;    

if(dy>dx){    
largeDegree= true;    

tempX= sx;    
sx=ex;    
ex=tempX;    

tempY = sy;    
sy=ey;    
ey=tempY;    

tempD=dx;    
dx=dy;    
dy=tempD;    
}    



p = 2*dy - dx;    
var tdy = 2*dy;    
var tdminy = 2*dy - 2*dx;    
var x=sx  , y=sy;    
var ix = (sx>ex)?-pin:pin;    
var iy = (sy>ey)?-pin:pin;        


if(largeDegree){    
pointCollection.push(new Point(x,y , pin));    
while(y!==ey){    
y+=iy;    
if(p<0){    
p+=tdy;    
}else{    
x+=ix;    
p+=tdminy;    
}    
pointCollection.push(new Point(x,y , pin));    
}    

}else{    
pointCollection.push(new Point(x,y , pin));    
while(x !== ex){    
x+=ix;    
if(p<0){    
p+=tdy;    
}else{    
y+=iy;    
p+=tdminy;    
}    
pointCollection.push(new Point(x,y , pin));    
}    
}    


}
全部回答
这不是div吧,这应该是canvas了 再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎样购买wlan
不舍,英文怎么翻译?
城墙街道办事处地址有知道的么?有点事想过去
自制葡萄酒发酵其间要搅拌吗?
五菱二手面包车多少钱
什么手机网游好玩
552和553电话号码能跨市接通吗
今日头条 推荐:407什么意思
单选题秦国打败赵军主力的战役是A.马陵之战B.
除了中国菜,哪个国家的美食最被中国人接受。
男戴银戒指有什么好处
手机导航,如何收费?
经纬仪可以测距离吗
高铁网上订票如何改签
杭州东到宜兴的客车
推荐资讯
从化到梅州有多远
请问,皇马就是这样不进球的!,大家评一评:
一卷新胶卷 用英语怎么表示
身份证的日期是按照阳历吗?
中国古代文书代表。
判断题101×38=100×38+1×38
电磁打点计时器时使用________(交流电或直流
李清照,秦观是什么派的诗人
施工电梯操作证年审申请表格
莫代尔就是木浆纤维吗?
为什么 Stack Overflow 允许用户用多个 ID 登
从郴州托运一辆自行车到长沙多少钱 一般是几
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?