diff --git a/src/components/Header.vue b/src/components/Header.vue
index de2c4f3..38d63aa 100644
--- a/src/components/Header.vue
+++ b/src/components/Header.vue
@@ -52,6 +52,7 @@ onMounted(() => {
align-items: center;
width: 72vw;
height: 60px;
+ /* margin-top: var(--status-bar-height); */
padding-left: 15px;
}
.back-btn {
diff --git a/src/pages.json b/src/pages.json
index 9ef883e..91a4cb3 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -1,136 +1,73 @@
{
"pages": [
{
- "path": "pages/index",
- "style": {
- "navigationBarTitleText": "首页"
- }
+ "path": "pages/index"
},
{
- "path": "pages/my-device",
- "style": {
- "navigationBarTitleText": "我的设备"
- }
+ "path": "pages/image-share"
},
{
- "path": "pages/device-intro",
- "style": {
- "navigationBarTitleText": "智能弓箭"
- }
+ "path": "pages/my-device"
},
{
- "path": "pages/user",
- "style": {
- "navigationBarTitleText": "用户信息"
- }
+ "path": "pages/device-intro"
},
{
- "path": "pages/orders",
- "style": {
- "navigationBarTitleText": "订单"
- }
+ "path": "pages/user"
},
{
- "path": "pages/order-detail",
- "style": {
- "navigationBarTitleText": "订单详情"
- }
+ "path": "pages/orders"
},
{
- "path": "pages/be-vip",
- "style": {
- "navigationBarTitleText": "会员"
- }
+ "path": "pages/order-detail"
},
{
- "path": "pages/grade-intro",
- "style": {
- "navigationBarTitleText": "等级介绍"
- }
+ "path": "pages/be-vip"
},
{
- "path": "pages/rank-intro",
- "style": {
- "navigationBarTitleText": "段位介绍"
- }
+ "path": "pages/grade-intro"
},
{
- "path": "pages/my-growth",
- "style": {
- "navigationBarTitleText": "我的成长"
- }
+ "path": "pages/rank-intro"
},
{
- "path": "pages/first-try",
- "style": {
- "navigationBarTitleText": "新手试炼"
- }
+ "path": "pages/my-growth"
},
{
- "path": "pages/practise",
- "style": {
- "navigationBarTitleText": "个人练习"
- }
+ "path": "pages/first-try"
},
{
- "path": "pages/practise-one",
- "style": {
- "navigationBarTitleText": "个人单组练习"
- }
+ "path": "pages/practise"
},
{
- "path": "pages/practise-two",
- "style": {
- "navigationBarTitleText": "个人耐力挑战"
- }
+ "path": "pages/practise-one"
},
{
- "path": "pages/friend-battle",
- "style": {
- "navigationBarTitleText": "好友约战"
- }
+ "path": "pages/practise-two"
},
{
- "path": "pages/battle-room",
- "style": {
- "navigationBarTitleText": "对战房间"
- }
+ "path": "pages/friend-battle"
},
{
- "path": "pages/ranking",
- "style": {
- "navigationBarTitleText": "排行赛"
- }
+ "path": "pages/battle-room"
},
{
- "path": "pages/rank-list",
- "style": {
- "navigationBarTitleText": "排行榜"
- }
+ "path": "pages/ranking"
},
{
- "path": "pages/team-match",
- "style": {
- "navigationBarTitleText": "排位赛"
- }
+ "path": "pages/rank-list"
},
{
- "path": "pages/melee-match",
- "style": {
- "navigationBarTitleText": "排位赛"
- }
+ "path": "pages/team-match"
},
{
- "path": "pages/match-detail",
- "style": {
- "navigationBarTitleText": "排位赛"
- }
+ "path": "pages/melee-match"
},
{
- "path": "pages/battle-result",
- "style": {
- "navigationBarTitleText": "对战结果"
- }
+ "path": "pages/match-detail"
+ },
+ {
+ "path": "pages/battle-result"
}
],
"globalStyle": {
diff --git a/src/pages/image-share.vue b/src/pages/image-share.vue
new file mode 100644
index 0000000..f91d280
--- /dev/null
+++ b/src/pages/image-share.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/static/device-icon.png b/src/static/device-icon.png
index 37e65f4..065eaf1 100644
Binary files a/src/static/device-icon.png and b/src/static/device-icon.png differ
diff --git a/src/static/first-try-title.png b/src/static/first-try-title.png
new file mode 100644
index 0000000..55df35f
Binary files /dev/null and b/src/static/first-try-title.png differ
diff --git a/src/static/qr-code.png b/src/static/qr-code.png
new file mode 100644
index 0000000..082c6f7
Binary files /dev/null and b/src/static/qr-code.png differ
diff --git a/src/util.js b/src/util.js
new file mode 100644
index 0000000..ad227cf
--- /dev/null
+++ b/src/util.js
@@ -0,0 +1,51 @@
+export function renderLine(ctx, from) {
+ ctx.beginPath();
+ ctx.lineWidth = 1;
+ ctx.strokeStyle = "rgba(255, 255, 255, 0.3)";
+ const length = 35;
+ ctx.moveTo(from, 293);
+ ctx.lineTo(from + length, 293);
+ ctx.stroke();
+}
+
+export function renderText(ctx, text, size, color, x, y) {
+ ctx.setFontSize(size);
+ ctx.setFillStyle(color);
+ ctx.fillText(text, x, y);
+}
+
+export function renderRankTitle(ctx, text) {
+ const fontSize = 10;
+ const textWidth = ctx.measureText(text).width;
+ const padding = 8; // 文字与背景边缘的间距
+ const radius = 10; // 圆角半径
+ const textX = 75;
+ const textY = 55;
+ const x = textX - padding; // 文字 x 坐标减去内边距
+ const y = textY - fontSize - padding / 2 + 1; // 文字 y 坐标减去字体大小和内边距
+ const width = textWidth + padding * 2 - 15; // 背景宽度
+ const height = fontSize + padding + 1; // 背景高度
+
+ // 开始绘制圆角矩形
+ ctx.beginPath();
+ ctx.moveTo(x + radius, y);
+ // 上边框
+ ctx.lineTo(x + width - radius, y);
+ ctx.arcTo(x + width, y, x + width, y + radius, radius);
+ // 右边框
+ ctx.lineTo(x + width, y + height - radius);
+ ctx.arcTo(x + width, y + height, x + width - radius, y + height, radius);
+ // 下边框
+ ctx.lineTo(x + radius, y + height);
+ ctx.arcTo(x, y + height, x, y + height - radius, radius);
+ // 左边框
+ ctx.lineTo(x, y + radius);
+ ctx.arcTo(x, y, x + radius, y, radius);
+
+ // 设置背景颜色并填充
+ ctx.fillStyle = "#5F51FF";
+ ctx.fill();
+ ctx.setFontSize(fontSize);
+ ctx.setFillStyle("rgba(255, 255, 255, 0.9)");
+ ctx.fillText(text, textX, textY); // 绘制文字
+}