다른 명령
아래는 **AutoIt** + **GDIPlus**를 사용해 **"SQL*KEY"** 텍스트에서 `*`가 `+`, `-`, `*`로 계속 반복되면서 동시에 글자 색상이 바뀌는 애니메이션을 구현한 코드입니다.
- 최종 코드 (`SQLKeyAnimation_Advanced.au3`)
```autoit
- include <GDIPlus.au3>
- include <GUIConstantsEx.au3>
- include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1) ; 이벤트 모드 활성화
- 설정
Local $text = "SQL*KEY" Local $fontSize = 36 Local $width = 400, $height = 100 Local $colors[7] = [0xFFFF0000, 0xFFFFA500, 0xFFFFFF00, 0xFF00FF00, 0xFF0000FF, 0xFF4B0082, 0xFF9400D3] ; ARGB 색상 Local $delay = 300 ; ms Local $font = "Arial"
- GDI+ 초기화
_GDIPlus_Startup() Local $hGUI = GUICreate("SQL*KEY Advanced Animation", $width, $height) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
- GDI+ 그래픽스 객체 생성
Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphics) Local $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
- 폰트 및 브러시 설정
Local $hFont = _GDIPlus_FontCreate($font, $fontSize) Local $hFormat = _GDIPlus_StringFormatCreate() Local $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000)
- 심볼 변경을 위한 변수
Local $symbolIndex = 0 Local $symbols[3] = ["*", "+", "-"] ; 반복할 심볼 순서
- 애니메이션 루프
GUISetState(@SW_SHOW)
Local $i = 0 While 1
; 배경 지우기 (흰색) _GDIPlus_GraphicsClear($hBackbuffer, 0xFFFFFFFF)
; 현재 심볼 결정 (0.5초마다 변경)
If Mod($i, 5) = 0 Then ; $delay=300ms 기준 1.5초마다 변경
$symbolIndex = Mod($symbolIndex + 1, 3)
EndIf
; 텍스트 생성 (SQL[현재 심볼]KEY) Local $animatedText = StringReplace($text, "*", $symbols[$symbolIndex])
; 텍스트 그리기
Local $xPos = 20
For $j = 1 To StringLen($animatedText)
Local $char = StringMid($animatedText, $j, 1)
; 현재 인덱스 글자만 색상 변경
If $j - 1 = Mod($i, StringLen($animatedText)) Then
_GDIPlus_BrushSetSolidColor($hBrush, $colors[$j - 1 Mod 7])
Else
_GDIPlus_BrushSetSolidColor($hBrush, 0xFF000000) ; 나머지 글자는 검정
EndIf
; 글자 그리기
_GDIPlus_GraphicsDrawStringEx($hBackbuffer, $char, $hFont, _GDIPlus_RectFCreate($xPos, 20, 30, 50), $hFormat, $hBrush)
$xPos += 30
Next
; 화면에 출력 _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0) Sleep($delay) $i += 1
WEnd
Func _Exit()
; GDI+ 리소스 해제 _GDIPlus_FontDispose($hFont) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hBackbuffer) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() Exit
EndFunc ```
- 주요 기능 설명
1. **심볼 애니메이션** (`*` → `+` → `-` 반복)
- 1.5초마다 심볼이 변경됩니다 (`$delay=300ms` × 5회). - `$symbols` 배열에서 순서를 변경할 수 있습니다.
2. **글자 색상 애니메이션**
- 각 글자가 순차적으로 무지개 색상으로 변경됩니다. - `$colors` 배열로 색상을 커스터마이징할 수 있습니다.
3. **고성능 렌더링**
- GDI+를 사용해 부드러운 텍스트 출력이 가능합니다.
- 실행 방법
1. AutoIt SciTE 편집기에 코드 복사 2. `F5` 키로 실행 3. 창이 나타나면 애니메이션 확인
- 추가 커스터마이징
- **변경 속도 조정**: `$delay` 값 수정 (작을수록 빠름) - **새로운 심볼 추가**: `$symbols` 배열에 문자 추가 예: `["*","+","-","="]` - **색상 변경**: `$colors` 배열의 ARGB 값 수정
이 코드는 **실시간 애니메이션**으로 동작하며, `.gif`로 저장하려면 외부 캡처 도구가 필요합니다.