From de94f6826512b6522de84b750b22fe22c45849f2 Mon Sep 17 00:00:00 2001 From: liaoxianglian Date: Fri, 26 Sep 2025 10:04:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=9B=9E=E4=BB=A5=E5=B7=A6=E4=B8=8B?= =?UTF-8?q?=E8=A7=92=E4=B8=BA=E5=9F=BA=E5=87=86=E8=AE=A1=E7=AE=97=E5=9D=90?= =?UTF-8?q?=E6=A0=87=EF=BC=8C=E8=BF=98=E6=98=AF=E4=B8=8D=E8=83=BD=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E5=8F=B3=E5=AF=B9=E9=BD=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/qelmt/dynamictext.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/qelmt/dynamictext.rs b/src/qelmt/dynamictext.rs index b6148f3..3102841 100644 --- a/src/qelmt/dynamictext.rs +++ b/src/qelmt/dynamictext.rs @@ -155,17 +155,13 @@ impl From<&DynamicText> for XMLElement { // 计算基础位置(不考虑旋转) // txt.x和txt.y现在是对齐点坐标,需要根据对齐方式计算出左上角位置 // 首先根据水平对齐方式计算左边界的x坐标 - let left_x = match txt.h_alignment { - HAlignment::Left => txt.align_x, - HAlignment::Center => txt.align_x - txt_width / 2.0, - HAlignment::Right => txt.align_x - txt_width, - }; + let left_x = txt.x; // 根据垂直对齐方式计算顶部的y坐标 let top_y = match txt.v_alignment { - VAlignment::Top => txt.align_y+pt_size * 1.5, - VAlignment::Center => txt.align_y+pt_size, - VAlignment::Bottom => txt.align_y+pt_size / 2.0, + VAlignment::Top => txt.align_y + pt_size / 2.0, + VAlignment::Center => txt.align_y - pt_size / 2.0, + VAlignment::Bottom => txt.align_y - pt_size + pt_size / 2.0, }; println!("左上角位置: x={}, y={}", left_x, top_y); @@ -181,7 +177,7 @@ impl From<&DynamicText> for XMLElement { // HAlignment::Right => cjk_offset, // }; - let base_y = top_y + 0.5 - (7.0 / 5.0 * pt_size + 26.0 / 5.0)+pt_size; + let base_y = top_y + 0.5 - (7.0 / 5.0 * pt_size + 26.0 / 5.0) + pt_size; // 如果有旋转角度,应用旋转变换 let (x_pos, y_pos) = if txt.rotation != 0.0 {