2014-09-14 3 views
0

Я использую следующий код для рисования в холсте html5, но storkeStyle не работает. Я вижу, что в консоли, что this.color изменен, но его сохранение в том же цвете, что и в orignal. (он обновляется при перемещении мыши).Не могу получить холст strokestyle для работы

ctx.lineWidth = pixelRatio * this.lineThickness; 
    ctx.strokeStyle = "rgba(" + this.color[0] + "," + this.color[1] + "," + this.color[2] + "," + this.color[3] + ")"; 
    ctx.beginPath() 
    //ctx.beginPath(); 
    //Horizontal 
    ctx.moveTo(pos[0] * pixelRatio, 0); 
    ctx.lineTo(pos[0] * pixelRatio, (pos[1] - squareSize2) * pixelRatio); 
    ctx.moveTo(pos[0] * pixelRatio, (pos[1] + squareSize2) * pixelRatio); 
    ctx.lineTo(pos[0] * pixelRatio, frameState.size[1] * pixelRatio); 


    //Vertical 
    ctx.moveTo(0, pos[1] * pixelRatio); 
    ctx.lineTo((pos[0] - squareSize2) * pixelRatio, pos[1] * pixelRatio); 
    ctx.moveTo((pos[0] + squareSize2) * pixelRatio, pos[1] * pixelRatio); 
    ctx.lineTo(frameState.size[0] * pixelRatio, pos[1] * pixelRatio); 


    ctx.rect((pos[0] - squareSize) * pixelRatio, (pos[1] - squareSize) * pixelRatio, squareSize2 * pixelRatio, squareSize2 * pixelRatio); 


    ctx.moveTo((pos[0] - squareSize4) * pixelRatio, pos[1] * pixelRatio); 
    ctx.lineTo((pos[0] + squareSize4) * pixelRatio, pos[1] * pixelRatio); 


    ctx.moveTo(pos[0] * pixelRatio, (pos[1] - squareSize4) * pixelRatio); 
    ctx.lineTo(pos[0] * pixelRatio, (pos[1] + squareSize4) * pixelRatio); 

    console.log("rgba(" + this.color[0] + "," + this.color[1] + "," + this.color[2] + "," + this.color[3] + ")"); 

    ctx.stroke(); 
+0

Ваш 'ctx.strokeStyle' отлично работает (при условии, что ваши this.colors являются значениями от 0-255): http://jsfiddle.net/m1erickson/zLr5ajey/ – markE

+0

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

+0

Тогда ваша проблема связана с кодом вне кода, который вы указали выше. ;-) – markE

ответ

-1

Проблема заключалась в том, что у меня были значения с плавающей запятой в цвете, и она работала только тогда, когда значения не имели десятичных точек.

Смежные вопросы