QR代碼
QR代碼是可繪製QR代碼的小工具,提供的內容可進行編碼,且前景和背景可分別以指定顏色呈現。
Note
顯示在TouchGFX Designer畫布上的QR代碼預覽是靜態範例,且一律會連結到該小工具的文件。
在模擬器中或目標上執行應用程式,看看根據使用者提供的文字實際產生的QR代碼。
小工具組
QR代碼位於TouchGFX Designer中的Images小工具組中。
TouchGFX Designer中的QR代碼屬性。
屬性組 | 屬性說明 |
---|---|
Name | 小工具的名稱。 Name是TouchGFX Designer和程式碼中使用的唯一識別碼。 |
Location | X 和Y會指定小工具左上角相對於其父的位置。 小工具的大小取決於QR代碼的版本。 鎖定會址定小工具是否應鎖定在目前的X和Y位置。 鎖定小工具也將無法透過螢幕與小工具互動。 可見指定小工具的可見性。 使小工具不可見還將停用透過螢幕與小工具進行的互動。. |
Configuration | QR版本會指定從版本1到版本40的QR代碼範圍。 版本1具有21x21「位元」。 版本40具有177x177「位元」。 比例指定繪製QR代碼的比例。 文字指定要編碼進QR代碼的內容。 錯誤修正代碼指定錯誤代號的容錯度。 |
Appearance | Alpha 指定小工具的透明度。 小工具的Alpha值介於0和255之間。 0為完全透明,255為實心。 前景指定用於前景的色彩。 預設為黑色。 背景指定用於背景的色彩。 預設為白色。 |
Mixin | 可拖動 指定小工具是否可在執行階段拖動。 ClickListener指定小工具是否會在點擊時發送callback。 FadeAnimator指定小工具是否可繪製其Alpha值變化的動畫。 MoveAnimator指定小工具是否可繪製X和Y值變化的動畫。 |
互動
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()
來強制重繪。