image2d
Version:
🍇 使用ECMAScript绘制二维图片。Drawing Two-Dimensional Pictures Using ECMAScript.
68 lines (61 loc) • 2.63 kB
JavaScript
import getStyle from '../../core/get-style';
import { REGEXP } from '../../core/config';
import image2D from '../../image2D';
// 把颜色统一转变成rgba(x,x,x,x)格式
// 返回数字数组[r,g,b,a]
export let formatColor = function (color) {
let colorNode = document.getElementsByTagName('head')[0];
colorNode.style['color'] = color;
let rgba = getStyle(colorNode, 'color');
let rgbaArray = rgba.replace(/^rgba?\(([^)]+)\)$/, '$1').split(new RegExp('\\,' + REGEXP.whitespace));
return [+rgbaArray[0], +rgbaArray[1], +rgbaArray[2], rgbaArray[3] == undefined ? 1 : +rgbaArray[3]];
};
// 获取一组随机色彩
export let getRandomColors = function (num, alpha) {
if (!(alpha && alpha >= 0 && alpha <= 1)) alpha = 1;
let temp = [];
for (let flag = 1; flag <= num; flag++) {
temp.push('rgba(' + (Math.random(1) * 230 + 20).toFixed(0) + ',' + (Math.random(1) * 230 + 20).toFixed(0) + ',' + (Math.random(1) * 230 + 20).toFixed(0) + ',' + alpha + ')');
}
return temp;
};
// 获取一组循环色彩
export let getLoopColors = function (num, alpha) {
if (!(alpha && alpha >= 0 && alpha <= 1)) alpha = 1;
// 颜色集合
let colorList = [
'rgba(84,112,198,' + alpha + ")", 'rgba(145,204,117,' + alpha + ")",
'rgba(250,200,88,' + alpha + ")", 'rgba(238,102,102,' + alpha + ")",
'rgba(115,192,222,' + alpha + ")", 'rgba(59,162,114,' + alpha + ")",
'rgba(252,132,82,' + alpha + ")", 'rgba(154,96,180,' + alpha + ")",
'rgba(234,124,204,' + alpha + ")"
];
let colors = [];
// 根据情况返回颜色数组
if (num <= colorList.length) {
// 这种情况就不需要任何处理
return colorList;
} else {
// 如果正好是集合长度的倍数
if (num % colorList.length == 0) {
// 将颜色数组循环加入后再返回
for (let i = 0; i < (num / colorList.length); i++) {
colors = colors.concat(colorList);
}
} else {
for (let j = 1; j < (num / colorList.length); j++) {
colors = colors.concat(colorList);
}
// 防止最后一个颜色和第一个颜色重复
if (num % colorList.length == 1) {
colors = colors.concat(colorList[4]);
} else {
for (let k = 0; k < num % colorList.length; k++) {
colors = colors.concat(colorList[k]);
}
}
}
}
// 返回结果
return colors;
};