필자가 이해하는 바와 같이 그라디언트 칠은 실제로 채우는 모양에 상대적이 아닌 캔바스 요소 자체 (즉, 0, 0)를 기준으로 지정해야합니다.그라데이션 채우기는 캔버스 위치가 아닌 모양 위치와 관련이 있습니까?
질문 : 이 주장에 맞습니까? 그 주위에 제안 된 방법이 있습니까? 예 (JSFiddle here)에 대한
: 거기
ctx.beginPath();
ctx.rect(40, 50, 100, 70);
var grd = ctx.createLinearGradient(0, 50, 0, 120);
grd.addColorStop(0, "red");
grd.addColorStop(1, "blue");
ctx.fillStyle = grd;
ctx.fill();
, 나는 사각형을합니다. 그 모양의 왼쪽 상단부터 시작하여 그라디언트로 채우기를 기대했지만, 처음 두 매개 변수로 0, 0
을 전달했습니다. 캔버스를 기준으로 사각형의 X/Y 좌표를 대신 전달해야합니다.
예를 들어, 수학 천재가 아니기 때문에 커브의 상단 위치 (제어점 만)를 알지 못하기 때문에이 곡선이 2 차 곡선으로 작성된 경우 문제가됩니다.
1. 그러나 2 차 곡선의 경우는 경계 (예 : 곡선의 상단 점)를 모르는 경우입니다. 오늘 수학 공식을 찾으려고했지만 실패했습니다. – Utkanos
@Utkanos 모든 방정식의 요점은 주어진 숫자 x가 해답을 만족시키는 다른 수를 찾을 수 있다는 것입니다. 따라서 y = (x - 2)^2 + 4는 쉽게 풀 수 있습니다. 예를 들어 x가 2이면 y에 대해 4를 얻습니다. 따라서 함수에 의해 정의 된 2 차 포물선이있는 경우 해당 곡선에서 점을 쉽게 생성 할 수 있습니다. 예를 들어, for (var i = 0, len = whatever.width; i
dylnmc