【发布时间】:2019-05-29 13:54:53
【问题描述】:
我有一个画布元素,我在其上绘制了许多图像并用文本覆盖它们。不幸的是,这个问题需要旋转其中一些图像和相应的文本。除此之外,还有一些图片必须有相应的背景颜色的问题(图片是平面图的桌子的简单轮廓)
这是我为处理向计划中添加单个办公桌而构建的功能。我遇到的问题是,当我使用旋转时,文本和背景颜色都不会出现,而如果我不旋转图像,则会正确显示,除了它们没有旋转并且背景 fillRect() 方向为 90 度关闭。
function redrawDesk(desk, ctx, color) {
var rotate = desk.rotation == 90 || desk.rotation == 270;
if (rotate) {
ctx.save();
ctx.rotate(Math.PI / 2);
ctx.clearRect(desk.left, desk.top, desk.width, desk.height);
ctx.restore()
}
var img = $("#desk_" + desk.rowID)[0];
ctx.drawImage(img, desk.left, desk.top, desk.height, desk.width);
var x = desk.left;
var y = desk.top;
var h = desk.height;
var w = desk.width;
if (rotate) {
//ctx.save()
ctx.rotate(Math.PI / 2);
var tmp=x;
x=y;
y=tmp;
tmp=h;
h=w;
w=tmp;
}
ctx.textAlign = "center";
ctx.fillText(desk.deskID, x + w / 2,y + h/ 2);
if (color) {
ctx.fillStyle = color;
ctx.fillRect(x, y, w, h);
}
//ctx.restore();
if (rotate) {
ctx.rotate(Math.PI / -2);
}
}
谢谢
【问题讨论】:
标签: html5-canvas