feat:添加按数字涂颜色
This commit is contained in:
@@ -1,15 +1,14 @@
|
||||
import { BaseMathDrawService } from './baseMathDraw';
|
||||
import { drawNumberPreview } from './numberPreviewDraw';
|
||||
import { drawNumberContent } from './numberContentDraw';
|
||||
import { drawNumberWriteContent } from './numberWriteDraw';
|
||||
import { drawNumberColorContent } from './numberColorContentDraw';
|
||||
|
||||
/**
|
||||
* 数字涂色绘制服务
|
||||
* 组合使用基础绘制服务、预览区域绘制服务和内容区域绘制服务
|
||||
* 按数字涂颜色绘制服务
|
||||
* 组合使用基础绘制服务和内容区域绘制服务
|
||||
*/
|
||||
class NumberColorDraw extends BaseMathDrawService {
|
||||
selectedNumber: number;
|
||||
functionId: string; // 功能ID,用于判断绘制类型
|
||||
colorData: {
|
||||
numbers: number[];
|
||||
} | null;
|
||||
|
||||
constructor(
|
||||
canvas: Canvas,
|
||||
@@ -17,17 +16,19 @@ class NumberColorDraw extends BaseMathDrawService {
|
||||
options?: Record<string, any>,
|
||||
) {
|
||||
super(canvas, ctx, options);
|
||||
this.selectedNumber = 0;
|
||||
this.functionId = options?.functionId || 'number-find';
|
||||
this.colorData = null;
|
||||
}
|
||||
|
||||
async draw(selectedNumber: number) {
|
||||
if (selectedNumber <= 0 || selectedNumber > 10) {
|
||||
async draw(
|
||||
colorData: { numbers: number[] },
|
||||
patternType: string = 'circle', // 'circle' 或 'caterpillar'
|
||||
) {
|
||||
if (!colorData || !colorData.numbers) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.setPrintConfig();
|
||||
this.selectedNumber = selectedNumber;
|
||||
this.colorData = colorData;
|
||||
this.clear();
|
||||
this.setPaper();
|
||||
|
||||
@@ -38,38 +39,16 @@ class NumberColorDraw extends BaseMathDrawService {
|
||||
this.drawMiniHeader();
|
||||
}
|
||||
|
||||
// 绘制预览区域
|
||||
// 绘制内容区域(按数字涂颜色)
|
||||
this.drawDivider();
|
||||
await drawNumberPreview({
|
||||
await drawNumberColorContent({
|
||||
canvas: this.canvas,
|
||||
ctx: this.ctx,
|
||||
selectedNumber: this.selectedNumber,
|
||||
colorData: this.colorData,
|
||||
canvasWidth: this.canvasWidth,
|
||||
startY: this.currentY,
|
||||
onDrawn: (currentY) => {
|
||||
this.currentY = currentY;
|
||||
},
|
||||
patternType,
|
||||
});
|
||||
|
||||
// 绘制内容区域(根据 functionId 选择不同的绘制方法)
|
||||
this.drawDivider();
|
||||
if (this.functionId === 'number-write') {
|
||||
// 书写类型:绘制书写行
|
||||
drawNumberWriteContent({
|
||||
ctx: this.ctx,
|
||||
selectedNumber: this.selectedNumber,
|
||||
canvasWidth: this.canvasWidth,
|
||||
startY: this.currentY,
|
||||
});
|
||||
} else {
|
||||
// 默认类型(number-find):绘制数字涂色内容
|
||||
drawNumberContent({
|
||||
ctx: this.ctx,
|
||||
selectedNumber: this.selectedNumber,
|
||||
canvasWidth: this.canvasWidth,
|
||||
startY: this.currentY,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user