GradRect.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import {SGraphItem} from "@persagy-web/graph/lib";
  2. import {SColor, SLinearGradient, SPainter, SRadialGradient, SRect} from "@persagy-web/draw/lib";
  3. export class GradRect extends SGraphItem{
  4. minX = 0;
  5. minY = 0;
  6. maxY = 1000;
  7. maxX = 1000;
  8. gradient: SRadialGradient | SLinearGradient | null = null;
  9. constructor(parent: SGraphItem | null, grad: SRadialGradient | SLinearGradient) {
  10. super(parent);
  11. this.gradient = grad;
  12. this.gradient.addColorStop(0, new SColor('#ff483b'));
  13. this.gradient.addColorStop(0.5, new SColor('#04ff00'));
  14. this.gradient.addColorStop(1, new SColor('#3d4eff'));
  15. }
  16. boundingRect() {
  17. return new SRect(
  18. this.minX,
  19. this.minY,
  20. this.maxX - this.minX,
  21. this.maxY - this.minY
  22. );
  23. }
  24. onDraw(painter:SPainter) {
  25. painter.pen.color = SColor.Black;
  26. painter.brush.gradient = this.gradient;
  27. painter.drawRect(0,0,1000,1000);
  28. if (this.gradient instanceof SRadialGradient) {
  29. painter.brush.color = SColor.Transparent;
  30. painter.drawCircle(this.gradient.x1, this.gradient.y1, this.gradient.r1);
  31. painter.drawCircle(this.gradient.x2, this.gradient.y2, this.gradient.r2);
  32. }
  33. }
  34. }