UNPKG

image2d

Version:

🍇 使用ECMAScript绘制二维图片。Drawing Two-Dimensional Pictures Using ECMAScript.

68 lines (61 loc) 2.63 kB
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; };