메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Autoit 부팅 로고 만들기

데브카페

Autoit 부팅 로고 만들기

아래는 **AutoIt** + **GDIPlus**를 사용해 **"SQL*KEY"** 텍스트에서 `*`가 `+`, `-`, `*`로 계속 반복되면서 동시에 글자 색상이 바뀌는 애니메이션을 구현한 코드입니다.

SQLKeyAnimation_Advanced.au3

#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. **심볼 애니메이션** (`*` → `+` → `-` 반복)

  - 1.5초마다 심볼이 변경됩니다 (`$delay=300ms` × 5회).
  - `$symbols` 배열에서 순서를 변경할 수 있습니다.

2. **글자 색상 애니메이션**

  - 각 글자가 순차적으로 무지개 색상으로 변경됩니다.
  - `$colors` 배열로 색상을 커스터마이징할 수 있습니다.

3. **고성능 렌더링**

  - GDI+를 사용해 부드러운 텍스트 출력이 가능합니다.
      1. 실행 방법

1. AutoIt SciTE 편집기에 코드 복사 2. `F5` 키로 실행 3. 창이 나타나면 애니메이션 확인

      1. 추가 커스터마이징

- **변경 속도 조정**: `$delay` 값 수정 (작을수록 빠름) - **새로운 심볼 추가**: `$symbols` 배열에 문자 추가 예: `["*","+","-","="]` - **색상 변경**: `$colors` 배열의 ARGB 값 수정

이 코드는 **실시간 애니메이션**으로 동작하며, `.gif`로 저장하려면 외부 캡처 도구가 필요합니다.

Comments