Установить начало холста в нижнем левом углу в Skia - PullRequest
1 голос
/ 21 мая 2019

Как я могу установить начало холста в нижнем левом углу вместо верхнего левого угла?

void draw(SkCanvas* canvas) {
  SkPaint p;
  p.setColor(SK_ColorRED);
  p.setAntiAlias(true);
  p.setStyle(SkPaint::kStroke_Style);
  p.setStrokeWidth(10);

  canvas->drawLine(200, 20, 100, 100, p);
}

https://fiddle.skia.org/c/e5fe08a701838b078c0ec6c98ef052c8

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Вы можете получить высоту и ширину из холста, затем вычтя из него, мы можем получить рисунок, похожий на оригинал, измененный на левый нижний угол.

Попробуйте этот код

void draw(SkCanvas* canvas) {
    SkPaint p;

    p.setColor(SK_ColorRED);
    p.setAntiAlias(true);
    p.setStyle(SkPaint::kStroke_Style);
    p.setStrokeWidth(10);

    canvas->drawLine(200, canvas->getDeviceClipBounds().height()-20, 100, canvas->getDeviceClipBounds().height()-100, p);
}
1 голос
/ 06 июня 2019

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

void draw(SkCanvas* canvas) {
    SkPaint p;
    p.setColor(SK_ColorRED);
    p.setAntiAlias(true);
    p.setStyle(SkPaint::kStroke_Style);
    p.setStrokeWidth(10);
    SkRect bounds = canvas->getLocalClipBounds();
    canvas->drawLine(bounds.fLeft + 200, bounds.fBottom - 20, bounds.fLeft + 100, bounds.fBottom - 100, p);
}
...