From 44f41e0229113ac1adb6d47f2af8bf1817aea8cf Mon Sep 17 00:00:00 2001 From: caominglei Date: Thu, 14 Mar 2024 14:31:41 +0800 Subject: [PATCH] =?UTF-8?q?drawCanvas=E6=96=B9=E6=B3=95=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E8=A7=A3=E5=86=B3=E4=BA=8C=E7=BB=B4?= =?UTF-8?q?=E7=A0=81=E6=B0=B4=E5=B9=B3=E4=B8=8D=E5=B1=85=E4=B8=AD=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=92=8C=E5=BA=95=E9=83=A8=E8=A2=AB=E9=81=AE=E6=8C=A1?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: caominglei --- AppScope/app.json5 | 2 +- CHANGELOG.md | 2 ++ entry/oh-package.json5 | 2 +- library/oh-package.json5 | 2 +- .../ets/components/MainPage/qrcodegen.ets | 30 +++++++++++++++---- oh-package.json5 | 2 +- 6 files changed, 31 insertions(+), 9 deletions(-) diff --git a/AppScope/app.json5 b/AppScope/app.json5 index 90cd25c..d3aa8e6 100644 --- a/AppScope/app.json5 +++ b/AppScope/app.json5 @@ -3,7 +3,7 @@ "bundleName": "cn.openharmony.qrcodegenerator", "vendor": "example", "versionCode": 1000000, - "versionName": "2.0.1-rc.0", + "versionName": "2.0.1-rc.1", "icon": "$media:app_icon", "label": "$string:app_name", "distributedNotificationEnabled": true diff --git a/CHANGELOG.md b/CHANGELOG.md index 10b0630..0480753 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## 2.0.1-rc.1 +drawCanvas方法修改逻辑,解决二维码水平不居中问题和底部被遮挡问题 ## 2.0.1-rc.0 修复不兼容API9问题 ## 2.0.1 diff --git a/entry/oh-package.json5 b/entry/oh-package.json5 index 29ff35c..3ae30d1 100644 --- a/entry/oh-package.json5 +++ b/entry/oh-package.json5 @@ -4,7 +4,7 @@ "name": "entry", "description": "example description", "repository": "", - "version": "2.0.1-rc.0", + "version": "2.0.1-rc.1", "dependencies": { "@ohos/qr-code-generator": "file:../library" } diff --git a/library/oh-package.json5 b/library/oh-package.json5 index 4cfbe42..9a3037c 100644 --- a/library/oh-package.json5 +++ b/library/oh-package.json5 @@ -12,6 +12,6 @@ "description": "High-quality QR Code generator library", "main": "index.ets", "repository": "https://gitee.com/openharmony-sig/qr-code-generator", - "version": "2.0.1-rc.0", + "version": "2.0.1-rc.1", "dependencies": {} } \ No newline at end of file diff --git a/library/src/main/ets/components/MainPage/qrcodegen.ets b/library/src/main/ets/components/MainPage/qrcodegen.ets index a527c43..941755e 100644 --- a/library/src/main/ets/components/MainPage/qrcodegen.ets +++ b/library/src/main/ets/components/MainPage/qrcodegen.ets @@ -253,11 +253,31 @@ namespace qrcodegen { public drawCanvas(scale: int, border: int, canvas: CanvasRenderingContext2D): void { if (scale <= 0 || border < 0) throw new Error("Value out of range"); - const width: int = (this.size + border * 2) * scale; - let canvasWidth = Math.min(canvas.width + canvas.height) - for (let y = -border; y < this.size + border; y++) { - for (let x = -border; x < this.size + border; x++) { - canvas.fillStyle = this.getModule(x, y) ? "#000000" : "#FFFFFF"; + let x1:number = 0; + + let y1:number = 0; + let codeScale: int = (this.size + border * 2) * scale; + let canvasMinEdge = Math.min(canvas.height,canvas.width); + // 二维码>canvas,需要缩小二维码 + if (canvasMinEdge < codeScale) { + scale = canvasMinEdge/(this.size + border * 2); + // 缩小后还有水平居中 + codeScale = (this.size + border * 2) * scale; + + if (x1 <= 0) { + x1 = 0; + } + if (y1 <= 0) { + y1 = 0; + } + } + x1 = Math.round(((canvas.width - codeScale)/2)/scale); + + y1 = Math.round(((canvas.height - codeScale)/2)/scale); + + for (let y = -border + y1; y < this.size + border + y1; y++) { + for (let x = -border + x1; x < this.size + border + x1; x++) { + canvas.fillStyle = this.getModule(x - x1, y - y1) ? "#000000" : "#FFFFFF"; canvas.fillRect((x + border) * scale, (y + border) * scale, scale, scale); } } diff --git a/oh-package.json5 b/oh-package.json5 index 6401c0e..f73b4f5 100644 --- a/oh-package.json5 +++ b/oh-package.json5 @@ -6,6 +6,6 @@ "name": "qrcodegenerator", "description": "example description", "repository": "", - "version": "2.0.1-rc.0", + "version": "2.0.1-rc.1", "dependencies": {} } -- Gitee