南烟i 2018-07-23 05:03 采纳率: 13.3%
浏览 1368
已结题

控制多边形在canvas大小范围内移动

限制矩形在canvas大小范围内移动的function的如下:
DrawingManager.prototype.limitOut = function (layer) {
console.log(layer);
if (layer.y < 1) {
layer.y = 1;
}
if (layer.x < 1) {
layer.x = 1;
}
if (layer.x + layer.width > layer.canvas.width + 1) {
layer.x = layer.canvas.width - layer.width - 1;
console.log("layer.canvas.width =" + layer.canvas.width,"layer.width = " + layer.width,"layer.x =" + layer.x);
}
if (layer.y + layer.height > layer.canvas.height + 1) {
layer.y = layer.canvas.height - layer.height - 1;
console.log("layer.canvas.height =" + layer.canvas.height,"layer.height = " + layer.height," layer.y = " + layer.y);
}
}
模仿矩形的写法,我写的如下:
DrawingManager.prototype.limit_Poly = function (layer){
//var Map = JSON.stringify(layer.p1);
console.log(layer);
var map = layer.p1;
console.log(map);
var xmax = -Infinity;
var ymax = -Infinity;
var xmin = Infinity;
var ymin = Infinity;
for (var n in map) {
if (n.charAt(0)=="x") {
xmax = Math.max(map[n],xmax);
xmin = Math.min(map[n],xmin);
}
if (n.charAt(0)=="y") {
ymax = Math.max(map[n],ymax);
ymin = Math.min(map[n],ymin);
}
}
console.log("xmax = "+ xmax +", ymax = "+ ymax +", xmin = "+ xmin +", ymin = "+ ymin);
var M = {"type":"line","x1":xmin,"y1":ymin,"x2":xmax,"y2":ymax};
layer.p1 = M;
console.log(layer.p1);
if (layer.p1.y1 < 1) {
layer.p1.y1 = 1;
}
if (layer.p1.x1 < 1){
layer.p1.x1 = 1;
}
if (layer.p1.x1 > layer.canvas.width){
layer.p1.x1 = layer.canvas.width - 1;
}
if (layer.p1.y1 > layer.canvas.height){
layer.p1.y1 = layer.canvas.height -1;
}
}
不能有效控制,求各位大神指出我该如何修改,在线等,急,谢谢

  • 写回答

3条回答 默认 最新

  • 天际的海浪 2018-07-23 09:19
    关注

    最大值是x3和y2啊

    if (layer.p1.x2 > layer.canvas.width){
    layer.p1.x2 = layer.canvas.width - 1;
    }
    if (layer.p1.y2 > layer.canvas.height){
    layer.p1.y2 = layer.canvas.height -1;
    }

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站