HTML5 Canvas Fill с двумя цветами - PullRequest
3 голосов
/ 26 января 2012

У меня есть требование заполнить фигуру двумя цветами - как шахматная доска.

Я видел некоторые эффекты градиента с css, но не видел подобных примеров.

Возможно ли это даже в Html5 Canvas?

Ответы [ 2 ]

8 голосов
/ 26 января 2012

Ты уверен, что можешь. Фактически, вы можете заполнить любую произвольную форму любой повторяющейся вещью, даже формами, которые вы делаете в самом Canvas!

Вот пример произвольной формы, заполняющейся «стручками гороха», которые были определены на холсте: http://jsfiddle.net/NdUcv/

Вот простой рисунок шахматной доски: http://jsfiddle.net/NdUcv/2/

Эта вторая заставляет заливку формы выглядеть так:

enter image description here

Я создаю этот шаблон, делая холст, а затем рисую на нем все, что хочу повторить:

var pattern = document.createElement('canvas');
pattern.width = 40;
pattern.height = 40;
var pctx = pattern.getContext('2d');

// Two green rects make a checkered square: two green, two transparent (white)
pctx.fillStyle = "rgb(188, 222, 178)";
pctx.fillRect(0,0,20,20);
pctx.fillRect(20,20,20,20);

Тогда на моем обычном холсте я могу сделать:

var pattern = ctx.createPattern(pattern, "repeat");
ctx.fillStyle = pattern;

и нарисуйте заполнить что-нибудь с этим шаблоном.

Конечно, это не обязательно должен быть путь холста, вы можете использовать изображение шахматной доски (или любое другое изображение) и заполнить им фигуру, используя шаблоны холста.

1 голос
/ 26 января 2012

Я сделал быстрый пример

<html>
<head>
<hea>
<body onload='xx()'>
<canvas id='mycanvas' width='256' height='256'>ops</canvas>
</body>
<script type='text/javascript'>
function xx(){
var canvas= document.getElementById('mycanvas');
    ctx= canvas.getContext('2d');

for(var i=0;i<8;i++){
    for(var j=0;j<8;j++){

if (ctx.fillStyle == '#000000')
ctx.fillStyle = 'blue';
else    ctx.fillStyle = '#000000';


ctx.fillRect(32*j, 32*i, 32,32);
    }
if (ctx.fillStyle == '#000000')
ctx.fillStyle = 'blue';
else    ctx.fillStyle = '#000000';
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...