본문 바로가기
이미지맥스 그리고 루아(lua)/[응용] GUI

[이미지맥스] GUI에 데이터를 표시하고 업데이트 하는 방법

by 위치결정 2022. 2. 7.
반응형

이미지맥스에 추가된 GUI 기능을 활용하면 로그창을 이용한 피드백보다 보다 직접적으로 데이터를 한눈에 보이게 꾸밀수 있습니다.

가령 OCR로 읽은 문자나 숫자를 GUI에 표시하는 것처럼 말이죠.

 

그럼 간단하게 OCR로 읽은 데이터를 GUI상에 표시하고 업데이트 하는 방법을 알아봅니다.

 

1. 메인 GUI 생성

우선 그룹을 만들어 OCR 데이터를 표시할 구획 영역을 할당해 줍니다.

어느정도 적당히 대충 만들고 그안을 텍스트와 데이터를 표시할 에디트로 채워봅니다.

 

※ GUI 생성시 미립자 팁::

GUI를 만들때 그룹을 생성한 좌표를 기준으로 x, y좌표에 상대적인 수치를 더하여 Text, Edit, Button, Radio 등을 생성하면 추후에 GUI를 수정이 필요하여 움직여야할때 그룹의 좌표만 옮겨주면 그룹 안의 오브젝트들이 함께 따라 움직입니다.

그만큼 grid 좌표를 타이핑 해야하는 노가다가 줄어드니 그룹을 기준으로 상대적인 좌표로 작성하는 습관을 들이시면 후에 UI를 수정할 미래의 내가 편해집니다.

main_gui = 'MAIN GUI'
GUIAddTab(main_gui)
GUISetCurTab(main_gui)


x, y, w, h = 10, 10, 280, 35
GUIAddGroup(x, y, w, h, '체력/마력')

hp_text_id = GUIAddText(x + 0, y + 10, -1, -1, '체력')
hp_edit_id = GUIAddEdit(x + 30, y + 10, 100, -1, '0', nil, 'hp_edit')

mp_text_id = GUIAddText(x + 140, y + 10, -1, -1, '마력')
mp_edit_id = GUIAddEdit(x + 170, y + 10, 100, -1, '0', nil, 'mp_edit')

GUIShow()

hp_text_id, hp_edit_id, mp_txet_id, mp_edit_id 등의 변수에는 각각 GUI의 오브젝트가 생성된 인스턴스 ID가 저장됩니다.

이 ID는 매우 중요하니 꼭 변수로 받아주도록 합니다.

 

2. OCR을 GUI로 업데이트 하는 액션이미지 스크립트 작성

GUI는 간단하게 완성되었고, 두번째로 OCR데이터가 저장된 변수값을 GUI로 업데이트 하는 스크립트를 실행할 액션이미지를 생성합니다.

 

ImageSearch() 함수를 이용하여 ocr 이미지들을 이미지서치 실행합니다.

OCR의 경우 이미지 서치의 성공 여부는 필요 없으므로 굳이 리턴 변수는 생성하지 않아도 보통 문제는 안되는것 같습니다.

 

OCR로 저장된 데이터는 GUIItemUpdate(ID, '업데이트할 문자, 숫자') 를 통해 업데이트후 GUIUpdate() 를 하여 GUI 라이브화면을 갱신하여줍니다.

 

여기서 GUIItemEnable() 함수를 이용해 edit를 사용자가 별도로 수정하지 못하도록 미사용 처리까지 할 것입니다.

 

-- OCR 이미지 테이블 이미지서치 실행
ImageSearch('hp_ocr')
ImageSearch('mp_ocr'}

-- OCR 데이터를 GUI edit에 ID를 이용하여 업데이트
GUIItemUpdate(hp_edit_id, HP_OCR)
GUIItemUpdate(mp_edit_id, MP_OCR)

-- edit를 사용자가 별도로 수정하지 못하도록 미사용처리
GUIItemEnable(hp_edit_id, false)
GUIItemEnable(mp_edit_id, false)

-- GUI 업데이트 실행
GUIUpdate()

여기까지 작성하고 매크로를 시작하면, GUI 화면에서 계속 해서 OCR로 읽어들인 데이터가 업데이트되고있는 것을 확인할수 있습니다.

이를 통해 비활성 동작중인 앱을 직접 켜보지 않아도 이미지맥스의 GUI만 잠깐 잠깐 들여다보면 현재 상황이 어떤 상태인지 파악하기 쉽게 꾸밀수 있게 됩니다.

또 어떤 정보를 추가해볼까요?

반응형

댓글