2012-10-10 49 views
0

我正在写一个画布上的文本,并试图添加一些边框,它应该根据文本大小动态调整大小。HTML5画布lineWidth被忽略

我的代码是:

<script> 
var mainText='this is a test'; 
var mainTextSize=40; 
var mainTextDimensions=getTextDimensions(mainText,mainTextSize,'verdana'); 

var smallStampCanvas=document.createElement("canvas"); 
smallStampCanvas.width=mainTextDimensions.width; 
smallStampCanvas.height=totalHeight; 
var smallStampContext=smallStampCanvas.getContext('2d'); 
smallStampContext.textBaseline='top'; 

smallStampContext.fillStyle = '#FF0000'; 
smallStampContext.strokeStyle = smallStampContext.fillStyle; 

smallStampContext.font = "bold "+mainTextSize+"px verdana"; 
smallStampContext.fillText(
    mainText, 
    0, 
    0 
); 

smallStampContext.strokeRect(0,0,smallStampCanvas.width,smallStampCanvas.height); 
smallStampContext.strokeRect(0,0,smallStampCanvas.width,mainTextDimensions.height); 
smallStampContext.lineWidth=Math.ceil(mainTextSize/4); 
smallStampContext.moveTo(0,mainTextDimensions.height); smallStampContext.lineTo(smallStampCanvas.width,mainTextDimensions.height); 
</script> 

一切工作正常,除了线宽。无论输入什么值,它都没有任何影响。 (行总是1px)记录时,输入整数10。

任何人有任何想法可能是什么问题?

+0

你能显示应该绘制更粗线的代码吗? – enhzflep

回答

3

试试这个:

smallStampContext.beginPath(); 
smallStampContext.lineWidth=Math.ceil(mainTextSize/4); 
smallStampContext.moveTo(0,mainTextDimensions.height); 
smallStampContext.lineTo(smallStampCanvas.width,mainTextDimensions.height); 
smallStampContext.stroke(); 

moveTolineTo不画 “行”。只有stroke实际上创建了该行。

+0

宾果!正是我所得到的 - 在设置线宽之后没有绘制线条的代码。代码+ – enhzflep

+0

该死的,我没有做到这一点很简单。现在工作很好!非常感谢! +1 – user6