diff --git a/patch_v2/ncm_app/app/ui/player.c b/patch_v2/ncm_app/app/ui/player.c index f92f71c..d0764f0 100644 --- a/patch_v2/ncm_app/app/ui/player.c +++ b/patch_v2/ncm_app/app/ui/player.c @@ -307,11 +307,19 @@ static void plr_draw_lyrics(void *ctx) const ncm_pal_t *pa = ncm_palette(g_dark); int W = g_W, H = g_H; - /* 底:封面铺满(最近邻,模糊近似)。无封面 → 沉浸底。 + /* 底:封面等比居中放大(contain:等比缩放到屏内最大、居中;四周主题底),无封面 → 沉浸底。 + * 不拉伸铺满(方图硬拉 480×720 变形丑,2026-09-02 用户报)。 * ⚠️ cover_get() 持锁返回,勿在绘前 return(防 g_cm 泄漏 → 下次 paint 自锁死,§18)。 */ meow_img *cov = cover_get(); - if (cov) meow_ui_img_scaled(0, 0, W, H, cov); - else meow_ui_fill_rect(0, 0, W, H, NCM_PLAYER_BG); + meow_ui_fill_rect(0, 0, W, H, NCM_PLAYER_BG); + if (cov) { + int cw = meow_img_w(cov), ch = meow_img_h(cov); + if (cw > 0 && ch > 0) { + int dw = W, dh = (int)((long)ch * W / cw); + if (dh > H) { dh = H; dw = (int)((long)cw * H / ch); } + meow_ui_img_scaled((W - dw) / 2, (H - dh) / 2, dw, dh, cov); + } + } cover_put(); /* 半透明叠加层:default=主题 scrim(日/夜跟随主题);power_save=黑色更重(§22)。 */ if (g_st.player_bg_mode == NCM_BG_POWER_SAVE)