일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 연산자
- Direct2D
- 포인터
- Tips강좌
- 프로그래밍
- 지식나눔강좌
- c#
- VS ERROR
- c++
- 이지스퍼블리싱
- CS
- 배열
- 티스토리
- 백준
- doit코틀린프로그래밍
- Kotlin
- Tips프로그래밍강좌
- 문법
- tipssoft
- Win32
- Desktop
- 알고리즘
- Windows
- 김성엽
- Visual Studio
- c
- 리뷰
- Programming
- 함수
- Javascript
- Yesterday
- Today
- Total
목록DEV/Direct2D (31)
F.R.I.D.A.Y.
텍스트 출력하기 1에서 구성한 코드를 기반으로 이제 출력하는 코드를 작성합니다. OnPaint 구성 이제 DirectWrite를 사용하기 위해 OnPaint 메서드를 구성하겠습니다. OnPaint 메서드를 구성하고 난 뒤, HandleMessage 메서드에 WM_PAINT와 OnPaint 메서드를 바인딩합니다. //mainWin.h - MainWindow private: LRESULT OnCreate(); LRESULT OnPaint(); // mainWin.cpp LRESULT MainWindow::OnPaint() { return 0; } // mainWin.cpp - HandleMessage switch (uMsg) { case WM_CREATE: { return OnCreate(); } case ..
Direct2D에서 텍스트 출력하기기본 환경 구성 DirectWrite를 사용할 수 있는 환경을 구성합니다. OnCreate 함수 바인딩 먼저 Direct2D를 사용할 수 있도록 구성하겠습니다. 메시지 핸들링을 기본 구조로 사용하므로 WM_CREATE 메시지에 대해 반응하는 함수 OnCreate 함수를 구성하고, 이어서 작성하겠습니다. 이렇게 만들어진 OnCreate 함수를 HandleMessage 함수에 바인딩 하겠습니다.LRESULT MainWindow::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam){ if (uMsg == WM_CLOSE) { PostQuitMessage(0); return 0; } else if (uMsg == WM_DESTR..
Direct2D에서 텍스트를 그리기 위해서는 DirectWrite라는 클래스를 이용합니다. 들어가기에 앞서 들어가기에 앞서 이 시리즈를 완벽히 따라한다면 아래와 같은 출력을 기대할 수 있습니다. 안내 이 시리즈는 다음 시리즈에서 파생되었습니다. Win32 BaseWindow Class 생성하기 지난 시간에 우리는 WinMain 함수와 WindowProc 함수를 생성하고 Windows Hello의 사진 암호와 비슷하게 작동하는 프로그램을 만들어 봤습니다. 프로그램은 비단 하나의 윈도우만을 가지고 있지는 않 pang2h.tistory.com 다음 정보를 사전에 알고 있어야 이해 가능합니다. Direct2D 기본 구조(Factory, RenderTarget) GDI/GDI+의 후속으로 여겨지는 Direct2D..
Win32를 시작하면서 그래픽 엔진으로 Direct2D를 이용하고 있다. 그러던 와중에 예제로 만든 프로그램에선 잘 실행되던MessageBox 함수가 직접 배운 걸 기반으로 작성한 프로그램에서는 화면에 노출되질 않아서 문제가 생겼었다. 그래픽 엔진 Windows의 기본 그래픽 엔진으로는 두 종류가 있다고 본다. 예전부터 내려온 GDI/GDI+와 Windows7가 출시하면 공개된 DirectX 시리즈 GDI/GDI+ Windows ME였나 암튼 굉장히 오래된 그래픽 API다. 이 엔진의 가장 큰 특징이라 하면, CPU 렌더링을 한다. 즉, 아무리 좋은 그래픽카드를 가지고 있어봐야 GDI/GDI+를 사용하고 있으면 말짱 도루묵이라는 소리다. 그럼에도 불구하고 여태 Windows의 그래픽을 담당했던 엔진임과 ..
단일 색상 브러시를 구현할 때 필요한 인터페이스이다. 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 픽..