//旋转镜像
ctx.setTransform(1, 0, 0, 1, 0, 0); //恢复坐标系
ctx.translate(
location[i].left -
component.show.Position.Left.value +
location[i].width / 2,
location[i].top -
component.show.Position.Top.value +
location[i].height / 2
);//以中心点为坐标原点旋转,即顶点的x值+宽度的一半
ctx.rotate((location[i].rotate * Math.PI) / 180);//旋转角度
ctx.translate(
-(
location[i].left -
component.show.Position.Left.value +
location[i].width / 2
),
-(
location[i].top -
component.show.Position.Top.value +
location[i].height / 2
)
);//以中心点为坐标原点旋转,即顶点的x值+宽度的一半整体的负数值
//如果有翻转,分别是垂直和水平
if(location[i].rotateY===180){
//垂直镜像 (宽度+顶点x坐标*2,0)
ctx.translate(location[i].width+ (location[i].left - component.show.Position.Left.value)*2, 0);
ctx.scale(-1, 1);
//恢复旋转的角度与旋转同,角度为旋转时的2倍
ctx.translate(
location[i].left -
component.show.Position.Left.value +
location[i].width / 2,
location[i].top -
component.show.Position.Top.value +
location[i].height / 2
);
ctx.rotate(2*(location[i].rotate * Math.PI) / 180);
ctx.translate(
-(
location[i].left -
component.show.Position.Left.value +
location[i].width / 2
),
-(
location[i].top -
component.show.Position.Top.value +
location[i].height / 2
)
);
}
console.log('location[i].rotateY',location[i].rotateY,location[i].rotate);
if(location[i].rotateX===180){
//垂直镜像 (0,高度+顶点y坐标*2)
ctx.translate(0,location[i].height+ (location[i].top - component.show.Position.Top.value)*2);
ctx.scale(1, -1);
//恢复同旋转,角度2倍
ctx.translate(
location[i].left -
component.show.Position.Left.value +
location[i].width / 2,
location[i].top -
component.show.Position.Top.value +
location[i].height / 2
);
ctx.rotate((2*location[i].rotate * Math.PI) / 180);
ctx.translate(
-(
location[i].left -
component.show.Position.Left.value +
location[i].width / 2
),
-(
location[i].top -
component.show.Position.Top.value +
location[i].height / 2
)
);
}
ctx.drawImage(
img,
location[i].left - component.show.Position.Left.value,
location[i].top - component.show.Position.Top.value,
location[i].width,
location[i].height
);