分享ntpr跟随文字宽度
This commit is contained in:
@@ -248,7 +248,7 @@ const drawSVGPathToCanvas = (ctx: any) => {
|
|||||||
ctx.save();
|
ctx.save();
|
||||||
|
|
||||||
// 移动到指定位置并缩放
|
// 移动到指定位置并缩放
|
||||||
ctx.translate(scale * 210 * dpr, scale * 90 * dpr);
|
ctx.translate(scale * 200 * dpr, scale * 90 * dpr);
|
||||||
const scaleValue = 0.8
|
const scaleValue = 0.8
|
||||||
ctx.scale(scaleValue, scaleValue);
|
ctx.scale(scaleValue, scaleValue);
|
||||||
|
|
||||||
@@ -543,7 +543,7 @@ const drawShareCard = async (ctx: any, data: ShareCardData, offscreen: any): Pro
|
|||||||
drawBoldText(ctx, '邀你加入', inviteX, inviteY, inviteFontSize, '#000000', "Noto Sans SC")
|
drawBoldText(ctx, '邀你加入', inviteX, inviteY, inviteFontSize, '#000000', "Noto Sans SC")
|
||||||
|
|
||||||
// 绘制"球局"特殊样式
|
// 绘制"球局"特殊样式
|
||||||
const qiuJuX = inviteX + ctx.measureText('邀你加入').width + 5 * dpr
|
const qiuJuX = inviteX + ctx.measureText('邀你加入').width + 4 * dpr
|
||||||
const qiuJuFontSize = scale * 44 * dpr
|
const qiuJuFontSize = scale * 44 * dpr
|
||||||
drawBoldText(ctx, '球局', qiuJuX, inviteY, qiuJuFontSize, '#48D800', '"Noto Sans SC"')
|
drawBoldText(ctx, '球局', qiuJuX, inviteY, qiuJuFontSize, '#48D800', '"Noto Sans SC"')
|
||||||
|
|
||||||
@@ -602,20 +602,29 @@ const drawShareCard = async (ctx: any, data: ShareCardData, offscreen: any): Pro
|
|||||||
// 绘制"单打"标签
|
// 绘制"单打"标签
|
||||||
const danDaX = scale * 100
|
const danDaX = scale * 100
|
||||||
const danDaY = scale * 196
|
const danDaY = scale * 196
|
||||||
const danDaWidth = scale * 76 * dpr
|
|
||||||
const danDaHeight = scale * 40 * dpr
|
const danDaHeight = scale * 40 * dpr
|
||||||
const danDaRadius = scale * 20 * dpr
|
const danDaRadius = scale * 20 * dpr
|
||||||
const danDaFontSize = scale * 22 * dpr
|
const danDaFontSize = scale * 22 * dpr
|
||||||
|
// 根据内容动态计算标签宽度(左右内边距)
|
||||||
|
const danDaPaddingX = scale * 16 * dpr
|
||||||
|
ctx.setFontSize(danDaFontSize)
|
||||||
|
const danDaTextWidth = ctx.measureText(data.gameType).width
|
||||||
|
const danDaWidth = danDaTextWidth + danDaPaddingX * 2
|
||||||
|
|
||||||
drawLabel(ctx, danDaX, danDaY, danDaWidth, danDaHeight, danDaRadius, data.gameType, danDaFontSize)
|
drawLabel(ctx, danDaX, danDaY, danDaWidth, danDaHeight, danDaRadius, data.gameType, danDaFontSize)
|
||||||
|
|
||||||
// 绘制技能等级标签
|
// 绘制技能等级标签(基于“单打”标签实际宽度后移)
|
||||||
const skillX = scale * 190
|
const labelGap = scale * 16 // 两个标签之间的间距(不乘 dpr,保持视觉间距)
|
||||||
|
const skillX = danDaX + danDaWidth + labelGap
|
||||||
const skillY = scale * 196
|
const skillY = scale * 196
|
||||||
const skillWidth = scale * 180 * dpr
|
|
||||||
const skillHeight = scale * 40 * dpr
|
const skillHeight = scale * 40 * dpr
|
||||||
const skillRadius = scale * 20 * dpr
|
const skillRadius = scale * 20 * dpr
|
||||||
const skillFontSize = scale * 22 * dpr
|
const skillFontSize = scale * 22 * dpr
|
||||||
|
// 根据内容动态计算技能标签宽度
|
||||||
|
const skillPaddingX = scale * 20 * dpr
|
||||||
|
ctx.setFontSize(skillFontSize)
|
||||||
|
const skillTextWidth = ctx.measureText(data.skillLevel).width
|
||||||
|
const skillWidth = skillTextWidth + skillPaddingX * 2
|
||||||
|
|
||||||
drawLabel(ctx, skillX, skillY, skillWidth, skillHeight, skillRadius, data.skillLevel, skillFontSize)
|
drawLabel(ctx, skillX, skillY, skillWidth, skillHeight, skillRadius, data.skillLevel, skillFontSize)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user