본문 바로가기

Study Memos

(206)
Direct2D (Section 43) 참고> blog.naver.com/tipsware/221125856649 1.Direct2D: GDI를 사용하는 것보다 좀 더 좋은 품질의 그림을 그릴 수 있는 기술 -> GDI+ 처럼 고해상도 그래픽과 'AntiAlias' 특성을 기본으로 사용 가능 -> 그래픽 장치의 그리기 가속 기능이나 그래픽 카드가 제공하는 여러 가지 특성을 직접 사용 가능하기 때문에 그래픽 출력 속도는 향상시키면서 CPU의 사용률은 오리혀 낮출 수 있음. -> 이와 더불어, GDI+와 달리 원격으로 접속한 시스템 또는 가상 머신에서 동작하는 프로그램에서도 그대로 사용 가능하기 때문에 GDI+에서 문제가 되는 상황을 많이 해결할 수 있음. 2. CoInitializeEx 함수: Direct2D는 COM(Component Objec..
GDI+ (Section 42) 참고> blog.naver.com/tipsware/221123175566 1. GDI는 1990년대 초반(나랑 나이가 비슷..)에 만들어진 개념이어서 계속 발전하는 그래픽 장치의 특성을 반영하지 못함. -> 이를 개선하기 위해 1990년대 후반에 GDI에 새로운 출력 기능이 추가된 GDI+가 등장함. (예를 들면 'AntiAlias' 기능 등) -> GDI+를 사용하면 출력 품질을 향상시킬 수 있고 BMP가 아닌 PNG나 JPEG와 같은 이미지도 쉽게 사용 가능함. 2. GDI+ : GDI를 수정하지 않고(즉, GDI로 만들어진 기존 프로그램과의 호환성을 유지하면서) 향상된 그래픽 장치의 특성을 사용할 수 있는 추가적인 라이브러리를 제공하는 기술 3. GDI+도 GDI와 마찬가지로 Win32 API 또는..
Timer (Section 41) 참고> blog.naver.com/tipsware/221128414845 1. SetTimer 함수: Timer를 생성하는 함수; 일정한 시간 간격으로 반복적인 작업을 하고 싶을 경우 Timer를 많이 사용함 2. nIDEvent 파라미터: Timer의 고유 아이디; 한 윈도우에서 여러개의 Timer를 가질 수 있기 때문에 각 타이머마다 고유 아이디가 있어야 함. 3. 이미 사용하고 있는 Timer 아이디를 다시 사용할 경우 Timer를 중복 생성하지 않고 기존 내용을 덮어씀. 4. Timer의 시간 간격은 최소 0.01(10ms)초 이상 2147483647 이하여야 함. Timer는 우선순위가 낮은 작업이기 때문에 프로그래머가 0.1 초로 설정한다고 해서 정확하게 0.1초로 설정되지 않음. 아주 작은 ..
SetDCPenBrush 함수 (Section 39) 참고> blog.naver.com/tipsware/220988622624 SetDCPenColor 함수에 대하여 1. 먼저 봐야 할 내용들 이 함수는 GetStockObject 함수에 DC_PEN라는 옵션을 사용했을 때만 사용... blog.naver.com 1. DC에 연결된 GDI Pen Object의 색상을 자주 변경해야 할 경우 SelectObject 함수도 그만큼 자주 호출되기 때문에 비효율적임. -> 이를 개선하고자 SelectObject함수의 호출을 줄이는 방법이 있음 -> SetDCpenColor 함수를 사용하면 됨 -> GetStockObject 함수의 DC_PEN 옵션을 사용했을 때에만 사용 가능함 2. SetDCPenColor 함수: DC에 설정된 PEN 객체의 색상을 변경하는 함수 ..
SetDCBrushColor 함수 (Section 38) 참고> blog.naver.com/tipsware/220988598651 1. DC에 연결된 GDI Brush Object의 색상을 자주 변경해야 할 경우 SelectObject 함수도 그만큼 자주 호출되기 때문에 비효율적임. -> 이를 개선하고자 SelectObject함수의 호출을 줄이는 방법이 있음 -> SetDCBrushColor 함수를 사용하면 됨 -> GetStockObject 함수의 DC_BRUSH 옵션을 사용했을 때에만 사용 가능함 2. SetDCBrushColor 함수: DC에서 가지고 있는 BRUSH 객체의 색상을 변경하는 함수 -> 굳이 DC의 BRUSH 객체를 갈아낄 필요없이 색상만 바꿔줄 수 있다. -> 반환 값으로 BRUSH 객체의 기존 색상을 리턴함. 3. 주의사항 -> SetD..
CreateHatchBrush 함수 (Section 37) 참고> blog.naver.com/tipsware/221121332281 1. 도형을 가득 채우고 싶다면 CreateSolidBrush 함수를 사용하지만, 도형을 다양한 형태의 선으로 채우고 싶다면 CreateHatchBrush를 사용해야 함. 2. CreateHatchBrush 함수: 특정 형태의 선으로 도형을 채우는 함수 -> 선의 모양(HS_ 로 시작하는 값; HS는 Hatch Style의 약자) 과 선의 색상을 파라미터로 받은 후 Hatch brush의 핸들 값을 반환함.
CreateSolidBrush 함수 (Section 36) 참고> blog.naver.com/tipsware/221121185151 1. CreateSolidBrush 함수: Brush 객체를 만드는 함수 -> 파라미터로 색깔 정보를 넣으면 됨. RGB(0, 0, 255) 처럼 RGB 매크로를 사용해도 되고 0x00FF0000 처럼 직접 바이트를 입력해도 됨. 단, 바이트를 입력할때는 리틀엔디언을 적용해서 0xAABBGGRR 순서로 적어야 함. 2. Rectangle 함수: DC에 연결된 BRUSH 객체와 PEN 객체를 이용해 사각형 영역을 그려줌. -> 프로그래머가 직접 DC에 BRUSH 객체와 PEN 객체를 바인딩한 후 Rectangle 함수를 호출해야 함. 3. FillRect 함수: Rectangle 함수 대신에 FillRect 함수를 사용하면 테두리 선..
GetStockObject 함수 (Section 35) 참고> blog.naver.com/tipsware/220988417978 1. Windows 운영체제는 사용빈도가 높고 내용이 바뀌지 않는 자원들을 미리 만들어서 가지고 있음. -> 'Stock Resoure' 또는 'Stock Object' 라고 부름. 2. GetStockObject 함수: 'Stock Object'의 핸들 값을 얻을 때 사용 -> GDI Object와 관련된 자원을 얻어옴. Brush, Pen, Font, Palette에 대한 핸들 값. 3. GetStockObject 함수로 얻은 핸들 값은 DeleteObject나 CloseHandle을 사용해서 제거하면 안됨. 왜냐하면 이 핸들 값은 Windows 운영체제가 원래부터 가지고 있었고 당연히 있을 거라고 생각하는 자원이기 때문.