diff --git a/UI/UI_global.c b/UI/UI_global.c index 7c782b0..d0a02c1 100644 --- a/UI/UI_global.c +++ b/UI/UI_global.c @@ -489,7 +489,7 @@ void Refresh_Transpose(const LEBEL_UI *UI, GUI_SWITCH * Group) { uint16_t c_top, c_bot; uint16_t cx = (UI->Id == GUI_SPEED) ? UI0902_CARD_TEXT_CX_R : UI0902_CARD_TEXT_CX_L; - uint16_t value_y, sub_y, x1, x2, content_w, clear_w, clear_h; + uint16_t value_y, value_y0, sub_y, x1, x2, content_w, clear_w, clear_h; char Textstr1[20] = {0,}; const uint8_t *sub_txt = (UI->Id == GUI_SPEED) ? (const uint8_t *)"BPM" : (const uint8_t *)"KEY"; UI_GetFocusGrad(UI->Id, &c_top, &c_bot); @@ -501,23 +501,24 @@ void Refresh_Transpose(const LEBEL_UI *UI, GUI_SWITCH * Group) clear_w = content_w; if (clear_w < UI0902_CARD_VALUE_W) clear_w = UI0902_CARD_VALUE_W; - value_y = UI_CardTextDrawY(UI0902_CARD_VALUE_Y, UI0902_CARD_VALUE_H, - UI0902_CARD_VALUE_LH, UI0902_CARD_VALUE_SIZE); + value_y0 = UI_CardTextDrawY(UI0902_CARD_VALUE_Y, UI0902_CARD_VALUE_H, + UI0902_CARD_VALUE_LH, UI0902_CARD_VALUE_SIZE); + value_y = (uint16_t)((int16_t)value_y0 + UI0902_CARD_VALUE_OY); /* 清区高度保证主值完整;不得侵入 KEY/BPM 行 */ clear_h = (uint16_t)(UI0902_CARD_VALUE_H + 1); if (clear_h < (uint16_t)(UI0902_CARD_VALUE_SIZE + 1)) clear_h = (uint16_t)(UI0902_CARD_VALUE_SIZE + 1); if (value_y + clear_h > UI0902_CARD_SUB_Y) clear_h = (uint16_t)(UI0902_CARD_SUB_Y - value_y); - x1 = UI_CardTextBoxX1(cx, clear_w, clear_w); - x2 = UI_CardTextBoxX2(cx, clear_w, clear_w); + x1 = (uint16_t)(UI_CardTextBoxX1(cx, clear_w, clear_w) + UI0902_CARD_VALUE_OX); + x2 = (uint16_t)(UI_CardTextBoxX2(cx, clear_w, clear_w) + UI0902_CARD_VALUE_OX); LCD_FillRoundRectGradient( x1, value_y, (uint16_t)(x2 - x1 + 1), clear_h, 0, c_top, c_bot); - x1 = UI_CardTextBoxX1(cx, UI0902_CARD_VALUE_W, content_w); - x2 = UI_CardTextBoxX2(cx, UI0902_CARD_VALUE_W, content_w); + x1 = (uint16_t)(UI_CardTextBoxX1(cx, UI0902_CARD_VALUE_W, content_w) + UI0902_CARD_VALUE_OX); + x2 = (uint16_t)(UI_CardTextBoxX2(cx, UI0902_CARD_VALUE_W, content_w) + UI0902_CARD_VALUE_OX); LCD_ShowString_AutoAlign_Gradient( x1, x2, value_y, (const uint8_t*)Textstr1, @@ -625,7 +626,7 @@ void label_Tranzpose_ui(const LEBEL_UI *UI,GUI_SWITCH * Group) GET_Num_Str(mGuiData[UI->Id].Current, 0, (char*)Textstr, UI->Id); content_w = (uint16_t)(strlen((char*)Textstr) * UI0902_ASCII_W(UI0902_CARD_VALUE_SIZE)); - /* 主值 */ + /* 主值基准位:三角仍按此中线;字母单独右移/上移 */ value_y = UI_CardTextDrawY(UI0902_CARD_VALUE_Y, UI0902_CARD_VALUE_H, UI0902_CARD_VALUE_LH, UI0902_CARD_VALUE_SIZE); x1 = UI_CardTextBoxX1(cx, UI0902_CARD_VALUE_W, content_w); @@ -635,7 +636,10 @@ void label_Tranzpose_ui(const LEBEL_UI *UI,GUI_SWITCH * Group) UI_DrawTriLeft(UI->x + 5, chev_cy); UI_DrawTriRight((uint16_t)(UI->x + UI->w - 5 - UI0902_TRI_R_W), chev_cy); LCD_ShowString_AutoAlign_Gradient( - x1, x2, value_y, Textstr, + (uint16_t)(x1 + UI0902_CARD_VALUE_OX), + (uint16_t)(x2 + UI0902_CARD_VALUE_OX), + (uint16_t)((int16_t)value_y + UI0902_CARD_VALUE_OY), + Textstr, LCD_ALIGN_CENTER, UI->Text_fc, c_top, c_bot, UI0902_CARD_VALUE_SIZE); /* KEY:独立行;先清底再画,保证不被主值残影叠住 */ @@ -693,7 +697,10 @@ void label_Speed_ui(const LEBEL_UI *UI,GUI_SWITCH * Group) gImage_UI0902_BtnPlus_23x22, BLACK); LCD_ShowString_AutoAlign_Gradient( - x1, x2, value_y, Textstr, + (uint16_t)(x1 + UI0902_CARD_VALUE_OX), + (uint16_t)(x2 + UI0902_CARD_VALUE_OX), + (uint16_t)((int16_t)value_y + UI0902_CARD_VALUE_OY), + Textstr, LCD_ALIGN_CENTER, UI->Text_fc, c_top, c_bot, UI0902_CARD_VALUE_SIZE); sub_y = UI_CardTextDrawY(UI0902_CARD_SUB_Y, UI0902_CARD_SUB_H, diff --git a/UI/UI_global.h b/UI/UI_global.h index 0101d83..b59289f 100644 --- a/UI/UI_global.h +++ b/UI/UI_global.h @@ -83,6 +83,9 @@ void CallUI_RestoreSelect(void); #define UI0902_CARD_VALUE_H 17 /* mode.png:主值≈y71–85,KEY/BPM≈y89;加大与「移调/速度」间距、收紧与 KEY/BPM */ #define UI0902_CARD_VALUE_Y 73 +/* 仅主值字母/数字:相对基准右移、上移(三角/±/KEY/BPM 不动) */ +#define UI0902_CARD_VALUE_OX 3 +#define UI0902_CARD_VALUE_OY (-3) #define UI0902_CARD_SUB_SIZE UI0902_FONT_SUB /* 9 */ #define UI0902_CARD_SUB_LH 9