Canvas

博客分类: 江河计划

Canvas

算法

罗马数字转整数

例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

var romanObj = {'I': 1,'V': 5,'X': 10,'L': 50,'C': 100,'D': 500,'M': 1000};
var romanToInt = function(s) {
    let max = 0;
    let result = 0;
    for (var i = s.length - 1; i >= 0; i--) {
        var currRoman = s[i];
        var currVal = romanObj[currRoman];
        result += currVal >= max ? currVal : -currVal;
        max = Math.max(max, currVal);
    }
    return result;
};

canvas 方法

arc()

用来绘制圆弧

context.arc(x, y, radius, startAngle, endAngle [, anticlockwise]);

arcTo()

绘制标准圆角

context.arcTo(x1, y1, x2, y2, radius);

beginPath()

开始一个新路径绘制

context.beginPath();

bezierCurveTo()

绘制贝塞尔曲线

context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);

clearRect()

清除画布

context.clearRect(x, y, width, height);

clip()

裁剪

context.clip(path, fillRule);

closePath()

闭合路径

context.closePath();

createImageData

创建一个全新的空的 ImageData 对象

context.createImageData(width, height); 
context.createImageData(imagedata);

createLinearGradient

创建线性渐变对象

context.createLinearGradient(x0, y0, x1, y1);

createPattern

创建图案对象

context.createPattern(image, repetition);

createRadialGradient

创建径向渐变

context.createRadialGradient(x0, y0, r0, x1, y1, r1);

drawFocusIfNeeded

路径轮廓高亮

context.drawFocusIfNeeded(path, element);