|
|
|
|
@ -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 {
|
|
|
|
|
|