QR 코드
QR Code는 인코딩할 콘텐츠가 제공되고 전경과 배경에 각각 지정된 색상이 있는 QR 코드를 그릴 수 있는 위젯입니다.
Note
TouchGFX Designer의 캔버스에 표시되는 미리 보기 QR 코드는 정적 예제이며 항상 위젯에 대한 문서로 연결됩니다.
시뮬레이터나 타겟에서 애플리케이션을 실행하여 실제로 생성된 QR 코드와 사용자가 제공한 텍스트를 확인해 보십시오.
위젯 그룹
QR Code는 TouchGFX Designer의 Images 위젯 그룹에서 찾을 수 있습니다.
TouchGFX Designer에서 QR Code의 속성은 다음과 같습니다.
속성 그룹 | 속성 설명 |
---|---|
이름 | 위젯의 이름입니다. 이름은 TouchGFX Designer와 코드에서 사용되는 고유 식별자입니다.. |
위치 | X와 Y는 상위 항목을 기준으로 위젯의 왼쪽 상단 모퉁이를 지정합니다. 위젯의 크기는 QR 코드 버전에 따라 결정됩니다. Lock은 현재의 X 및 Y 위치에서 위젯의 고정 여부를 지정합니다. 위젯을 고정하면 화면을 통해 위젯과 인터랙션할 수 없습니다. Visible은 위젯의 표시 여부를 지정합니다. 위젯을 보이지 않게 설정해도 화면을 통해 위젯과 인터랙션할 수 없습니다. |
구성 | QR Version은 버전 1부터 버전 40까지의 QR 코드 범위를 지정합니다. 버전 1은 21x21 "비트"입니다. 버전 40은 177x177 "비트"입니다. Scale은 QR 코드를 그리는 배율을 지정합니다. Text는 QR 코드에 인코딩할 내용을 지정합니다. Error Correction Code는 잘못된 코드워드에 대한 허용 오차 수준을 지정합니다. |
모양 | Alpha는 위젯의 투명도를 지정합니다. 위젯의 알파 값 범위는 0~255입니다. 0은 완전한 투명이며 255는 불투명입니다. Foreground는 전경에 사용되는 색상을 지정합니다. 기본값은 검은색입니다. Background는 배경에 사용되는 색상을 지정합니다. 기본값은 흰색입니다. |
Mixin | Draggable은 런타임 시 위젯을 드래그할 수 있는지 여부를 지정합니다. ClickListener는 위젯이 클릭 시 때 콜백을 발생시킬지 여부를 지정합니다. FadeAnimator는 위젯이 알파 값에 대한 변경 사항을 애니메이션할 수 있는지 여부를 지정합니다. MoveAnimator는 위젯이 X 및 Y 값에 대한 변경 사항을 애니메이션할 수 있는지 여부를 지정합니다 |
인터랙션
TouchGFX Designer의 QR Code에서 지원하는 액션과 트리거는 다음과 같습니다.
액션
표준 위젯 액션 | 설명 |
---|---|
Move widget | 시간이 지남에 따라 위젯을 새로운 위치로 이동시킵니다. |
Fade widget | 시간이 지남에 따라 위젯의 알파 값을 변경합니다. |
Hide widget | 위젯을 숨깁니다(visibility를 false로 설정). |
Show widget | 숨겨진 위젯을 표시합니다(visibility를 true로 설정). |
트리거
QR Code는 트리거를 발생시키지 않습니다.
성능
QR Code 위젯의 성능은 픽셀 계산으로 인해 이미지보다 느리지만 화면에서 이동하거나 간단한 애니메이션의 일부로 페이드인할 수 있을 만큼 빠릅니다.
그리기 성능에 대한 자세한 내용은 General UI Component Performance 섹션을 참조하십시오.
예제
생성된 코드
View 기본 클래스에 대해 생성된 코드를 보면 TouchGFX Designer에서 QR Code가 어떻게 설정되는지 알 수 있습니다. 버퍼는 헤더 파일에서 설정되며(강조 표시된 줄 참조), 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
문자열이 QR Code에 들어갈 수 있는 길이보다 긴 경우(수준에 따라 다름)
convertStringToQRCode
함수가 실패할 수 있습니다.사용자는 함수의 반환 값을 확인해야 합니다.
Tip
이러한 함수와 사용자 코드의 QR Code 클래스에서 사용할 수 있는 다른 함수를 사용할 수 있습니다. 위젯의 모양을 변경하는 경우
qrCode1.invalidate()
를 호출하여 강제로 다시 그려야 한다는 것을 잊지 마십시오.