본문 바로가기
코스웨어/15년 스마트컨트롤러

20151117 수업 / API_4 남수진

by 알 수 없는 사용자 2015. 11. 18.
728x90
반응형

WinAPI

  • 액셀러레이터
    • 단축키

Image(45)

Image(46)

Image(47)

Image(48)

Image(49)


  • 문자열 테이블
    • 문자열을 리소스화 시켜서 불러온다
    • 프로그램 전체를 수정하지 않아도 프로그램에 사용되는 문자열만 수정할 수 있다 
    • 게임을 예로 들면 대화창 번역을 손쉽게 할 수 있다

Image(50)


  • GDI 오브젝트
    • 선의 모양, 굵기, 색을 바꿀 수 있다
    • 비트맵을 그리거나 들고올 수 있음

  • 스톡 오브젝트
    • GetStockObject
      • 새로운 브러시 같은 object 생성
    • SelectObject
      • 생성한 object 를 사용하겠다는 함수
      • 기존의 object 에 대한 핸들이 반환된다

Image(51)

  • 색상

Image(52)

    • CreatePen() 함수로 펜을 만든다
    • 브러시와 마찬가지로 SelectObject()를 사용하여 교체한다
    • Pen은 동적할당을 받으므로 DeleteObject()로 지워준다

Image(53)

  • 브러시
    • CreateSolidBrush - 브러시 색만 설정
    • CreateHatchBrush - 브러시의 색과 무늬까지 설정

Image(54)

Image(55)


  • ROP 모드
    • 반전모드

Image(56)

Image(57)

  • 윈도우와 뷰포트
    • 뷰포트 : 물리 좌표가 사용되는 영역, 실제 사용자 눈에 보이는 좌표
    • 원점: 좌표의 기준이 되는 점
      • SetViewportOrgEx() 함수로 원점을 화면 좌상단에서 원하는 위치로 옮길 수 있다

Image(58)


  • 비트맵 이미지
    • 버퍼링
      • 이미지를 먼저 메모리에 복사하고 이를 화면에 고속 복사하는 방법을 쓴다
    • 확대/축소는 할 수 없다
    • CreateCompatibleDC(hdc)
      • 메모리 DC를 만든다
    • LoadBitmap, SelectObject
      • 비트맵을 메모리에 올리는 함수
    • BitBlt
      • 비트맵을 실제로 화면에 띄우는 함수
        • 메모리의 이미지를 화면으로 옮긴다
      • 인자
        • hdc, 가로, 세로, 넓이, 높이, MemDC, 0, 0, SRCCOPY
    • StretchBlt
      • 앞의 5인자
        • 원본 이미지의 기준점 + 크기
      • 뒤의 5인자
        • 화면에 표시할 이미지의 기준점 + 크기
      • 맨 뒤의 1인자
        • 옵션
    • 고속화
      • 올리는 작업은 WM_CREATE
      • Delete는 WM_DESTROY로
      • 비트맵 도중에 사용하는 변수들은 static으로 선언하여 종료할 때 까지 비트맵이미지가 계속 메모리에 있도록 한다

Image(59)

Image(60)

  • BitBlt 함수를 사용한 비트맵 출력

Image(61)

  • StretchBlt를 활용한 비트맵 출력

Image(62)

  • Visual Studio를 이용해서 비트맵 이미지 직접 만들기

Image(63)Image(64)

Image(65)

  • 그림판의 비트맵 VS에 붙이기
    • 아무 그림이나 찾아서 그림판에서 크기 조절(Ctrl + W)
    • VS에서 비트맵 파일을 열어 Ctrl+V

Image(66)

Image(67)


  • 비트맵 파일 움직이기
    • 경계검사
      • 윈도우 범위 밖으로 졸라맨이 나가지 못하도록 한다
    • 창 모양 고정
      • 사용자가 창 크기를 바꿀 수 없게
    • 비트맵을 읽어오는 LoadBitmap()을 WM_CREATE에 몰아서 비트맵 로드 시간을 줄인다

Image(68)


728x90