분류 전체보기 (597) 썸네일형 리스트형 비트 패턴 (Section 19) 참고> blog.naver.com/tipsware/220986010426 1. Windows의 비트 패턴: Windows 운영체제는 핸들 개념을 쓰기 때문에 응용 프로그램이 직접 비트맵에 접근할 수 없음. -> 그래서 비트맵의 '비트 패턴'을 통째로 복사해오는 함수(GetBitmapBits)와 새로운 '비트 패턴'을 해당 비트맵에 설정하는 함수(SetBitmapBits)가 있음. 2. GetBitmapBits: 비트맵의 '비트 패턴'을 복사해오는 함수 3. SetBitmapBits (현재는 SetDIBits): 비트맵에 새로운 '비트 패턴'을 설정하는 함수 -> 이 함수는 16비트 Windows에서 쓰던 함수고 지금은 SetDIBits 함수로 대체됨 DC (Section 18) 참고> blog.naver.com/tipsware/220983425334 1. DC(Device Context)에는 여러 가지의 GDI Object(Pen, Brush, Bitmap, Font ...)가 연결되어 있는데 현재 사용중인 GDI Object를 확인할 때는 GetCurrentObject 함수를 사용하면 됨. -> ex) ::GetCurrentObject(h_dc, OBJ_BITMAP); (:: 는 Win API 네임스페이스를 의미) 2. 윈도우와 연결된 DC에서 비트맵 정보를 얻게 되면 비트맵의 크기가 클라이언트 영역의 크기와 일치하는 것이 아니라 윈도우 전체 크기(캡션, 테두리 영역 포함)와 일치함 -> 따라서 윈도우의 크기를 사용해야 할 경우, GetWidnowRect 함수를 사용할 필요 .. GDI (Section 16) 참고> blog.naver.com/tipsware/220986173576 Bitmap과 GDI 그리고 DC (Feat. GDI Object) 한동안 제가 비트맵에 대한 블로깅을 참 많이 했는데, 그 이유가 바로 GDI와 DC를 설명하려고 했던 것... blog.naver.com 1. GDI(Graphic Device Interface): Windows 운영체제가 그래픽 장치에 대해 프로그램이 독립성을 유지할 수 있도록 만든 기술 -> Windows 운영체제는 그래픽 장치에 대해 프로그램 소스 코드가 독립성을 유지할 수 있도록 그래픽 장치를 하나의 모델로 추상화시킴 2. GDI Object: Windows 운영체제는 그래픽 장치를 추상화 시키기 위해서 그리기에 필요한 요소들을 여러 개의 객체로 구성하고 장.. BITMAP 구조체 (Section 15) 참고> blog.naver.com/tipsware/220983334717 BITMAP 구조체 대하여 BITMAP 구조체는 비트맵의 폭, 높이, 색상 형식 그리고 비트 패턴에 대한 주소를 저장할 수 있습니다... blog.naver.com 1. BITMAP 구조체는 비트맵의 폭, 높이, 색상 형식 그리고 비트 패턴에 대한 주소를 저장할 수 있음 (wingdi.h) -> bmType: 비트맵 형식 변수, 항상 0을 넣어주어야 함 -> bmWidth: 비트맵의 폭(pixel 단위) -> bmHeight: 비트맵의 폭(pixel 단위) -> bmWidthBytes: 가로 방향으로 한 줄에 사용되는 바이트 수 ex) 비트맵 폭이 200dlrh 32비트(4바이트) 색상이라면 한 줄에 필요한 크기는 200 * 4 =.. Bitmap 생성 (Section 14) 참고> https://blog.naver.com/tipsware/220985029852 비트맵 생성하기 : Win32 프로그래밍 관련 전체 목차 http://blog.naver.com/tipsware/2210599771931. 먼저 봐야 할 내용들... blog.naver.com 1. 비트맵 생성 => CreateBitmap() => CreateBitmap 함수의 4번째 인자인 색상 수에 특정 값을 고정해서 사용하면 프로그램의 호환성이 떨어짐. 왜냐하면 그래픽 장치마다 색상 수가 다를 수 있고, 같은 그래픽 장치라 하더라도 사용자가 운영체제 설정에서 색상 수를 다르게 설정해서 사용할 수 있기 때문에 주의해야 함. 이 경우 CreateBtimap()은 DDB형식의 비트맵을 생성하는 것임. 그래서 Creat.. Bitmap (Section 13) 참고> blog.naver.com/tipsware/220984197835 비트맵에 대하여 : Win32 프로그래밍 관련 전체 목차http://blog.naver.com/tipsware/221059977193 1. 컴퓨터의 화면 출력 ... blog.naver.com 참고> genesis8.tistory.com/37 리틀 엔디안 VS 빅 엔디안 먼저 둘을 비교하기에 앞서 엔디언이란 무엇인가? 엔디언(Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 특히 genesis8.tistory.com 1. 모니터에 출력되는 영상은 '점(pixel) 단위'로 구성되어 있음 2. 해상도(resolution) => 컴퓨터의 그래픽 장치.. Windows Message (Section 8) https://blog.naver.com/tipsware/221211757379 1. Windows 응용 프로그램들은 시스템 자원을 사용하고 싶은 경우, API 함수를 호출하여 Windows 운영체제에게 서비스를 요청하고 해당 서비스에 대한 운영체제의 결과를 기다리는 방식으로 작업이 진행됨. 2. 특정 Window에 마우스를 클릭하거나 키보드를 입력했다면 Windows 운영체제가 해당 Window를 소유한 응용 프로그램에게 그 사실을 알려야지만 해당 응용 프로그램이 사용자 입력에 대한 상황을 처리할 수 있음. => 이를 위해 Windows 운영체제와 실제 반응할 응용 프로그램간의 동기화 기술이 필요. => "Window Message"의 탄생 3. Message ID 운영체제가 Window에 발생한 각종.. Bitmap Create / Draw 시 lock을 걸 때 [ 증상 ] 회사에서 영상 렌더링을 위한 Bitmap Create / Draw 코드를 고칠 일이 있었다. Bitmap Create 하는 구간과 Bitmap Draw 하는 구간을 하나의 mutex로 locking하였다. 이상없이 잘 되나 했더니 화면이 자꾸 껌벅껌벅 거리는 것이었다. [ 원인 ] 이유는 Bitmap Create가 시간을 많이 잡아먹어서 Draw가 제대로 수행되지 않았던 거였다. Bitmap Create 하면서 lock을 계속 잡고 있기 때문에, 같은 mutex를 사용하는 Bitmap Draw영역은 lock 구간에 들어가지 못하고 기다린다. [ 조치 ] lock을 걸 때에는 최대한 lock 구간 내부에서 빨리 빠져나와야 한다. 그래서 Bitmap Create 하는 부분을 locking 범위에.. 이전 1 ··· 59 60 61 62 63 64 65 ··· 75 다음