Skip to main content

Angular Konva 变换器教程

变换器工具是命令式地附加到节点上的。在 Angular 中,这意味着创建一个 ko-transformer 并在视图准备就绪后将其连接到选定的形状。

说明:点击矩形以选中它,拖动它以移动它,点击空白舞台以清除选择。

有关更多详细信息,请参阅 变换器 API 参考

变换器示例

import { Component, ViewChild, AfterViewInit } from '@angular/core';
import { StageConfig } from 'konva/lib/Stage';
import { RectConfig } from 'konva/lib/shapes/Rect';

import {
CoreShapeComponent,
StageComponent,
} from 'ng2-konva';

@Component({
selector: 'app-root',
standalone: true,
template: `
<ko-stage [config]="configStage" (click)="handleStageClick($event.event)">
<ko-layer>
<ko-rect
#rect
[config]="configRect"
(click)="handleShapeClick()"
></ko-rect>
<ko-transformer #transformer></ko-transformer>
</ko-layer>
</ko-stage>
`,
imports: [StageComponent, CoreShapeComponent],
})
export default class App implements AfterViewInit {
@ViewChild('rect') rect!: any;
@ViewChild('transformer') transformer!: any;

public configStage: StageConfig = {
width: window.innerWidth,
height: window.innerHeight,
};
public configRect: RectConfig = {
x: 100,
y: 100,
width: 100,
height: 100,
fill: 'red',
stroke: 'black',
strokeWidth: 4,
draggable: true
};

ngAfterViewInit() {
this.transformer.getNode().nodes([this.rect.getNode()]);
}

public handleStageClick(event: any): void {
if (event?.target === event.target.getStage()) {
this.transformer.getNode().nodes([]);
}
}

public handleShapeClick(): void {
this.transformer.getNode().nodes([this.rect.getNode()]);
}
}