跳轉到主要內容

QR代碼

QR代碼是可繪製QR代碼的小工具,提供的內容可進行編碼,且前景和背景可分別以指定顏色呈現。

Note
顯示在TouchGFX Designer畫布上的QR代碼預覽是靜態範例,且一律會連結到該小工具的文件。

在模擬器中或目標上執行應用程式,看看根據使用者提供的文字實際產生的QR代碼。

在模擬器中執行的QR代碼

小工具組

QR代碼位於TouchGFX Designer中的Images小工具組中。

TouchGFX Designer中的QR代碼

TouchGFX Designer中的QR代碼屬性。

屬性組屬性說明
Name小工具的名稱Name是TouchGFX Designer和程式碼中使用的唯一識別碼
LocationXY會指定小工具左上角相對於其父的位置。

小工具的大小取決於QR代碼的版本。

鎖定會址定小工具是否應鎖定在目前的X和Y位置。
鎖定小工具也將無法透過螢幕與小工具互動。

可見指定小工具的可見性。 使小工具不可見還將停用透過螢幕與小工具進行的互動。.
ConfigurationQR版本會指定從版本1到版本40的QR代碼範圍。
版本1具有21x21「位元」。 版本40具有177x177「位元」。

比例指定繪製QR代碼的比例。

文字指定要編碼進QR代碼的內容。

錯誤修正代碼指定錯誤代號的容錯度。
AppearanceAlpha 指定小工具的透明度。 小工具的Alpha值介於0和255之間。 0為完全透明,255為實心

前景指定用於前景的色彩。 預設為黑色。

背景指定用於背景的色彩。 預設為白色。
Mixin可拖動 指定小工具是否可在執行階段拖動。

ClickListener指定小工具是否會在點擊時發送callback。

FadeAnimator指定小工具是否可繪製其Alpha值變化的動畫。

MoveAnimator指定小工具是否可繪製XY值變化的動畫。

互動

TouchGFX Designer中的QR代碼支援的動作和觸發條件。

動作

標準小工具動作說明
移動小工具隨時間的推移將小工具移動到新位置。
漸隱小工具隨時間的推移改變小工具的Alpha值。
隱藏小工具隱藏小工具(可見性設定為false)。
顯示小工具使隱藏的小工具可見(將可見性設定為true)。

觸發條件

QR代碼不會產生任何觸發條件。

效能

由於像素是運算得出的,因此QR代碼的效能比圖像慢,但它的速度夠快,可在螢幕上移動或是作為簡單動畫的一部分漸漸淡出。

關於繪圖效能的更多資訊,請參閱通用UI元件效能章節。

範例

產生程式碼

在產生的View基底類別程式碼中,可以查看TouchGFX Designer如何設定QR代碼。 緩衝區是設定在標頭檔案中(請參閱反白突顯的程式行)。 這些適用於運算和儲存QR代碼位元值。

Screen1ViewBase.hpp
#ifndef SCREEN1VIEWBASE_HPP
#define SCREEN1VIEWBASE_HPP

#include <gui/common/FrontendApplication.hpp>
#include <mvp/View.hpp>
#include <gui/screen1_screen/Screen1Presenter.hpp>
#include <touchgfx/widgets/Box.hpp>
#include <touchgfx/widgets/QRCode.hpp>

class Screen1ViewBase : public touchgfx::View<Screen1Presenter>
{
public:
Screen1ViewBase();
virtual ~Screen1ViewBase();
virtual void setupScreen();

protected:
FrontendApplication& application() {
return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
}

/*
* Member Declarations
*/
touchgfx::Box __background;
uint8_t qrBuffer_qrCode1[QRCODE_BUFFER_SIZE(1)];
uint8_t qrScratchBuffer_qrCode1[QRCODE_BUFFER_SIZE(1)];
touchgfx::QRCode qrCode1;

private:

};

#endif // SCREEN1VIEWBASE_HPP
Screen1ViewBase.cpp
#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
#include <touchgfx/Color.hpp>

Screen1ViewBase::Screen1ViewBase()
{
qrCode1.setXY(0, 0);
qrCode1.setBuffers(qrBuffer_qrCode1, qrScratchBuffer_qrCode1);
qrCode1.setQRCodeVersion(1);
qrCode1.setScale(5);
qrCode1.convertStringToQRCode("SUPPORT.TOUCHGFX.COM");
add(qrCode1);
}

Screen1ViewBase::~Screen1ViewBase()
{

}

void Screen1ViewBase::setupScreen()
{

}
Caution
如果字串超過QRCode可容納的長度(取決於等級),則convertStringToQRCode函數可能會失敗。

使用者應確認函數的傳回值。

Tip
您可以在使用者程式碼中使用QRCode類別中的這些函數和其他可用函數。 如果您變更了小工具的外觀,記得呼叫qrCode1.invalidate()來強制重繪。

API參考