Не удается установить равномерную ширину штриха на canvas.loadFromJSON?

#javascript #canvas #fabricjs

#javascript #холст #fabricjs

Вопрос:

Итак, я указал прямоугольник, как:

 addRect() {
    let square = new fabric.Rect({
      width: 20,
      height: 30,
      stroke:"yellow",
      strokeWidth:10,
      left: 50,
      top: 50,
      strokeUniform:true,
      fill:"rgba(0,0,0,0.2)",
      flipX:true
    });
    this.canvas.add(square);
  }

 

На холсте я получаю что-то вроде этого:
Ширина штриха для квадрата является точной

Я временно сохраняю данные холста:

 saveData() {
    let jsonData = JSON.stringify(this.canvas);
    localStorage.setItem('data', jsonData);
    this.dataPreview.nativeElement.value = jsonData;
  }

 

И затем я загружаю эти данные обратно на холст:

 loadData() {
    let jsonData = localStorage.getItem('data');
    this.canvas.loadFromJSON(
      jsonData,
      () => {
        this.canvas.requestRenderAll();
        this.dataPreview.nativeElement.value = jsonData;
      },
      this.onDataLoadFailed
    );
  }
 

Я получаю что-то вроде этого на canvas:
введите описание изображения здесь

Как я должен это исправить? Я думаю, что проблема может быть в том, что данные JSON не имеют никакого значения для strokeUniform .

Ответ №1:

Свойство strokeUniform прокомментировано из ToObject.

Обходным путем является включение свойства в качестве аргумента метода toJSON

 console.log(JSON.stringify(canvas.toJSON("strokeUniform")));
 

Комментарии:

1. Вау, это сработало просто отлично, большое спасибо!