일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- tipssoft
- Javascript
- Win32
- c
- c++
- 함수
- Tips프로그래밍강좌
- 지식나눔강좌
- 티스토리
- Tips강좌
- CS
- 프로그래밍
- VS ERROR
- Windows
- Visual Studio
- Desktop
- 배열
- 이지스퍼블리싱
- 김성엽
- Direct2D
- 연산자
- doit코틀린프로그래밍
- 리뷰
- 포인터
- 문법
- 백준
- Programming
- 알고리즘
- Kotlin
- c#
- Yesterday
- Today
- Total
목록All (383)
F.R.I.D.A.Y.
GetWindowRect와 GetClientRect 함수의 차이를 알아봅니다. 윈도우의 구성 윈도우는 다음과 같이 구성되어 있습니다. Windows에서 제공하는 테두리와 실제 개발자가 작성하고 관리하는 클라이언트 영역, 두 영역으로 나뉘어 있습니다. 비클라이언트 영역 비클라이언트 영역은 Windows에서 관리합니다. 비클라이언트 영역(non-client area)을 포함하는 윈도우 크기를 가져올 때는 GetWindowRect 함수를 사용합니다. 클라이언트 영역 클라이언트 영역은 개발자가 관리합니다. 클라이언트 영역의 윈도우 크기를 가져올 때는 GetClientRect 함수를 사용합니다. Direct2D에서의 사용 Direct2D는 렌더링 타겟의 크기를 기준으로 대상을 그립니다. 따라서 렌더링 타겟의 크기..
이전 포스트에서 작성한 BaseWindow를 기반으로 한 MainWindow를 구성하겠습니다. MainWindow 먼저 파일을 분리하겠습니다. mainWin.h 파일을 생성합니다. 그리고 BaseWindow를 상속하기 위해 baseWin.h를 추가합니다. 그리고 BaseWindow를 상속하는 MainWindow를 생성합니다. class MainWindow :public BaseWindow { }; public 함수 구성하기 BaseWindow 클래스에는 두 개의 순수 가상 함수가 존재합니다. 따라서 MainWindow를 사용해도 BaseWindow를 상속했기 때문에 객체를 생성할 수 없습니다. 이제 객체를 생성할 수 있도록 MainWindow에서 두 개의 가상함수를 오버라이드 하겠습니다. 그리고 클래스 ..
지난 시간에 우리는 WinMain 함수와 WindowProc 함수를 생성하고 Windows Hello의 사진 암호와 비슷하게 작동하는 프로그램을 만들어 봤습니다. 프로그램은 비단 하나의 윈도우만을 가지고 있지는 않습니다. 따라서 윈도우에서 여러 번 사용할 수 있는 코드를 만들어 볼겁니다. ※ C++의 기본 지식이 필요합니다. 들어가며 이 포스트는 MS DOCS의 Get Started with Win32 and C++에 기반을 두고 있습니다. Get Started with Win32 and C++ - Win32 apps The aim of this Get Started series is to teach you how to write a desktop program in C++ using Win32 and ..
단일 색상 브러시를 구현할 때 필요한 인터페이스이다. ID2D1SolidColorBrush ID2D1HwndRenderTarget에서 생성할 수 있는 브러시에 대한 정보를 담는 객체의 인터페이스다. 사각형 등의 도형을 그릴 때 선의 색을 이 인터페이스로 구현된 객체로 정하기도 한다. CreateSolidColorBrush ID2D1HwndRenderTarget에 존재하는 메서드로, 브러시 객체를 생성할 수 있다. 함수 원형 HRESULT CreateSolidColorBrush( const D2D1_COLOR_F & color, ID2D1SolidColorBrush **solidColorBrush ); D2D1_COLOR_F D2D1::ColorF 메서드로 생성하는 값으로, struct D3DCOLORVA..
Direct2D에서 사각형을 그릴 수 있는 함수 DrawRectangle GDI/GDI+에서는 Rectangle 함수였던 것이 Direct2D에서는 DrawRectangle 함수로 변경되었다. 함수 원형 void DrawRectangle( const D2D1_RECT_F & rect, ID2D1Brush *brush, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle ); 세 번째 인자인 strokeWidth와 strokeStyle은 모두 기본값이 존재[# strokeWidth = 1.0f\nstrokeStyle=0]하기 때문에 첫 번째와 두 번째 인자만 작성해도 사용에는 문제가 없다. D2D1_RECT_F 사각형을 그릴 크기와 위치를 모두 포함한다. D2D1_REC..
HwndRenderTarget의 크기를 조절하는 함수 Resize HwndRenderTarget의 크기는 능동적으로 변경되지 않는다. 렌더링 타겟인 윈도우의 크기가 변경되면 HwndRenderTarget의 크기가 자동으로 윈도우 크기에 맞춰 조정되지 않는다는 것이다. 이렇게 렌더링 타겟의 크기는 그대로, 윈도우의 크기는 바뀌게 되면 아래와 같은 문제가 발생하곤 한다. 이 문제의 원인은 위에서 설명한 것처럼 윈도우의 클라이언트 영역 크기와 렌더링 타겟에서 인식하고 있는 영역의 크기가 서로 다르기 때문에 발생하는 문제이다. 함수 원형 HRESULT Resize( const D2D1_SIZE_U *pixelSize ); 렌더링 타겟의 크기를 설정하는 인자 하나를 받는다. D2D1_SIZE_U 렌더링 타겟의 크..
HwndRenderTarget의 그리기 영역을 초기화하는 메서드 Clear() WNDCLASS에서 hbrBackground처럼 Direct2D의 배경만 남기고 그동안 그렸던 모든 리소스를 윈도우에서 지워버리는 함수라고 생각하면 편할 듯 하다. 함수 원형 void Clear( const D2D1_COLOR_F *clearColor ); void Clear( const D2D1_COLOR_F &clearColor ); 두 개의 오버로드 함수가 있다. D2D1_COLOR_F D2D1::ColorF 메서드로 생성하는 값으로, struct D3DCOLORVALUE에서 왔다. struct D3DCOLORVALUE { FLOAT r; FLOAT g; FLOAT b; FLOAT a; }; 각 레드(r), 그린(g), ..
Factory 객체를 생성하는 함수 D2D1CreateFactory Direct2D를 이용할 때, 각종 리소스(이미지) 등을 생성할 수 있도록 제공하는 객체가 바로 ID2D1Factory 인터페이스로 만들어진 객체다. 이 객체를 생성할 수 있도록 도와주는 함수가 D2D1CreateFactory 함수다. 함수 원형 HRESULT D2D1CreateFactory( D2D1_FACTORY_TYPE factoryType, REFIID riid, const D2D1_FACTORY_OPTIONS *pFactoryOptions, void **ppIFactory ); D2D1_FACTORY_TYPE 해당 팩토리 객체를 단일 스레드로 이용할 것인지 멀티 스레드 환경으로 이용할 것인지를 정하는 옵션. REFIID ID2D..
렌더 타겟을 생성하는 함수 CreateHwndRenderTarget CreateHwndRenderTarget 리소스(이미지 등)을 그릴 때 그리는 공간을 지정하는 RenderTarget을 의 핸들(HWND)를 생성하는 메서드로, Factory 객체로부터 호출이 가능하다. 함수 원형 HRESULT CreateHwndRenderTarget( const D2D1_RENDER_TARGET_PROPERTIES & renderTargetProperties, const D2D1_HWND_RENDER_TARGET_PROPERTIES & hwndRenderTargetProperties, ID2D1HwndRenderTarget **hwndRenderTarget ); D2D1_RENDER_TARGET_PROPERTIES 픽..
GDI/GDI+의 후속으로 여겨지는 Direct2D 구조 Direct2D는 아래의 순서로 진행된다. ID2D1Factory를 생성 ID2D1HwndRenderTarget을 생성 브러시 생성 및 RenderTarget에 지정 그리기 리소스 해제(Factory 등)[# 모든 사용이 끝났을 때만 하면 된다. 프로그램을 작동하는 과정에서 계속 사용한다면 굳이 해제할 필요가 없다.] ID2D1Factory Direct2D에서 사용하는 리소스를 생성할 수 있는 인터페이스[# 설계도면같은 개념. 클래스 작성에 있어 필수적으로 들어갈 메서드를 선언한다.]를 제공한다. 최상위 인터페이스는 IUnknown. 다음으로 생성할 수 있다. #pragma comment(lib, "d2d1") #include ID2D1Factor..