Skip to content

Commit 2b01ca9

Browse files
committed
fix: 修复二叉树不在画布中心的问题
通过计算树的实际边界(minX, maxX),然后计算水平偏移量使树居中显示。 修改了Canvas组件中的绘制逻辑,在创建主容器时添加了centerOffsetX偏移。
1 parent c906130 commit 2b01ca9

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/components/Canvas/Canvas.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,18 @@ export const Canvas: React.FC<CanvasProps> = ({ treeData, currentStep }) => {
4848
const nodes = flattenVisualTree(visualRoot);
4949
const edges = getEdges(visualRoot);
5050

51+
// 计算树的实际边界,用于居中
52+
const xValues = nodes.map(n => n.x);
53+
const minX = Math.min(...xValues);
54+
const maxX = Math.max(...xValues);
55+
const treeWidth = maxX - minX;
56+
57+
// 计算水平偏移量,使树居中
58+
const centerOffsetX = (innerWidth - treeWidth) / 2 - minX;
59+
5160
// 创建主容器
5261
const g = svg.append('g')
53-
.attr('transform', `translate(${margin.left + transform.x}, ${margin.top + transform.y}) scale(${transform.k})`);
62+
.attr('transform', `translate(${margin.left + transform.x + centerOffsetX}, ${margin.top + transform.y}) scale(${transform.k})`);
5463

5564
// 定义箭头标记
5665
svg.append('defs').append('marker')

0 commit comments

Comments
 (0)