console
CanvasRenderingContext2D.prototype.fillTextVertical = function (text, x, y) {
var context = this;
var canvas = context.canvas;
var arrText = text.split('');
var arrWidth = arrText.map(function (letter) {
return context.measureText(letter).width;
});
var align = context.textAlign;
var baseline = context.textBaseline;
if (align == 'left') {
x = x + Math.max.apply(null, arrWidth) / 2;
}else if (align == 'right') {
x = x - Math.max.apply(null, arrWidth) / 2;
}
if (baseline == 'bottom' || baseline == 'alphabetic' || baseline == 'ideographic') {
y = y - arrWidth[0] / 2;
} else if (baseline == 'top' || baseline == 'hanging') {
y = y + arrWidth[0] / 2;
}
context.textAlign = 'center';
context.textBaseline = 'middle';
arrText.forEach(function (letter, index) {
var letterWidth = arrWidth[index];
var code = letter.charCodeAt(0);
if (code <= 256) {
context.translate(x, y);
context.rotate(90 * Math.PI / 180);
context.translate(-x, -y);
} else if (index > 0 && text.charCodeAt(index - 1) < 256) {
y = y + arrWidth[index - 1] / 2;
}
context.fillText(letter, x, y);
context.setTransform(1, 0, 0, 1, 0, 0);
var letterWidth = arrWidth[index];
y = y + letterWidth;
});
context.textAlign = align;
context.textBaseline = baseline;
};
$(window).resize(resizeCanvas);
function resizeCanvas() {
$("#myCanvas").attr("width", document.documentElement.clientWidth - 20);
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var middle = myCanvas.width / 2
var between = myCanvas.width / 5
ctx.beginPath();
ctx.lineWidth = 1;
ctx.lineCap = "round";
ctx.moveTo(middle - 2 * between, 10);
ctx.lineTo(middle + 2 * between, 10);
ctx.lineWidth = 0.5;
ctx.strokeStyle = "#F0870A";
ctx.stroke();
ctx.beginPath();
ctx.lineWidth = 3;
ctx.strokeStyle = "#F0870A";
ctx.moveTo(middle - 2 * between, 10);
ctx.lineTo(middle - 2 * between, 30);
ctx.font = '24px STKaiti, sans-serif';
ctx.textAlign = 'center';
ctx.textBaseline = 'top';
ctx.fillTextVertical('anglebaby和黄晓明', middle, 50);
ctx.moveTo(middle - between, 10);
ctx.lineTo(middle - between, 30);
ctx.moveTo(middle, 7);
ctx.lineTo(middle, 30);
ctx.moveTo(middle + between, 10);
ctx.lineTo(middle + between, 30);
ctx.moveTo(middle + 2 * between, 10);
ctx.lineTo(middle + 2 * between, 30);
ctx.stroke();
};
resizeCanvas();
<canvas id="myCanvas" width="355" height="366" >
您的浏览器不支持 HTML5 canvas 标签。
</canvas>
/* * {
margin: 0;
padding: 0;
}
html,body{
width: 100%;
height: 100%;
}
canvas{
display: block;
width: 100%;
height: 100%;
} */