How Can I Rotate A Linear Gradient? September 08, 2024 Post a Comment How can I make my white line go perfectly diagonal from point to point of my bottom rectangle? https://jsfiddle.net/a7rs5qu5/ Solution 1: By mathematics, and changing gradient coordinates. You need to set gradient coordinates so they describe a line orthogonal to it._canvas = document.getElementById('canvas'); _stage = _canvas.getContext('2d'); _stage.fillStyle = "#00FF00"; _stage.fillRect(0, 0, 300, 200); var radius = 100; var angle = Math.atan2(100, 300) + Math.PI / 2; var gx = radius * Math.cos(angle); var gy = radius * Math.sin(angle); var cx = (0 + 300) / 2; var cy = (200 + 300) / 2; var gradient = _stage.createLinearGradient(cx - gx, cy - gy, cx + gx, cy + gy); gradient.addColorStop(0, "blue"); gradient.addColorStop(.5, "white"); gradient.addColorStop(1, "blue"); _stage.fillStyle = gradient; _stage.fillRect(0, 200, 300, 300);Copy<canvasid="canvas"width="300"height="300"></canvas>CopyThe selection of radius controls how wide the gradient is; the above value merely gives values similar to the ones used in the code above.Solution 2: Here is a more generalized solution for the lazy.functioncreateDiagonalGradient(startx, starty, endx, endy) { var height = endy - starty; var radius = height; //-1 or 1 depending on which diagonal you wantvar angle = -1 * Math.atan2(height, endx) + Math.PI / 2; var gx = radius * Math.cos(angle); var gy = radius * Math.sin(angle); var cx = (startx + endx) / 2; var cy = (starty + endy) / 2; var gradient = _stage.createLinearGradient(cx - gx, cy - gy, cx + gx, cy + gy); gradient.addColorStop(0, "black"); gradient.addColorStop(.5, "white"); gradient.addColorStop(1, "black"); return gradient; } Copy Share Post a Comment for "How Can I Rotate A Linear Gradient?"
Post a Comment for "How Can I Rotate A Linear Gradient?"