문제

다음과 같은 방사형 구배가 있습니다.

<radialGradient
   inkscape:collect="always"
   xlink:href="#linearGradient2454"
   id="radialGradient2460"
   cx="4022.8572"
   cy="5451.2656"
   fx="4022.8572"
   fy="5451.2656"
   r="3559.865"
   gradientTransform="matrix(-0.1071067,-0.1166362,0.1377765,-7.0459663e-2,276.61943,1452.439)"
   gradientUnits="userSpaceOnUse" />

이 그라디언트 크기를 90% 줄이고이 새로운 스케일에 따라 적절하게 번역하고 싶습니다 (X 위치는 402.2, Y 위치는 545.1 등이됩니다).

분명히 CX, CY, FX, FY 및 R을 .1로 곱하면 그 길의 일부가 될 것입니다. 그러나 나머지 길을 얻기 위해 GradientTransform을 프로그래밍 방식으로 재 작업하는 방법은 무엇입니까?

도움이 되었습니까?

해결책

매개 변수 (cx, fx, r 등)를 그대로 두었습니다. 기존 변환 매트릭스에 스케일링을위한 새 행렬에 곱하십시오. 결과 매트릭스는 그라디언트의 새로운 변환 행렬입니다.

센터 주변에서 스케일링하려면 스케일링 매트릭스에 번역을 추가해야합니다.

따라서 이것은 스케일링 계수 s = 0.1에 대한 것입니다.

newGradientTansform = 
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top