Reputation: 2053
I'm writing text on a canvas and am attempting to add some sort of border around it which should size dynamically based on the text size.
My code is:
<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>
All works fine except for the lineWidth. No matter what value is entered it doesn't seem to have any effect. (line is always 1px) When logging it an integer 10 is entered.
Anyone has any idea what could be the problem?
Upvotes: 0
Views: 1196
Reputation: 13967
Try this:
smallStampContext.beginPath();
smallStampContext.lineWidth=Math.ceil(mainTextSize/4);
smallStampContext.moveTo(0,mainTextDimensions.height);
smallStampContext.lineTo(smallStampCanvas.width,mainTextDimensions.height);
smallStampContext.stroke();
moveTo
and lineTo
don't draw "lines". Only stroke
actually creates the line.
Upvotes: 3