블로그 이미지
안녕1999

카테고리

전체 (3067)
자바스크립트 (20)
안드로이드 (14)
WebGL (4)
변비 (17)
정치,경제 (35)
C언어,ARM (162)
컴퓨터(PC, Note Book, 윈.. (41)
전자회로, PCB (27)
유머,안웃긴,GIF,동영상 (118)
국부론60 (71)
모듈(PCB) (3)
건강 (2)
FreeCAD (25)
PADS (43)
퇴직,퇴사,구직,취업 활동 (3)
C# (86)
엑셀 (8)
워드 (0)
LabView (6)
레고 (30)
FPGA (0)
Total
Today
Yesterday

달력

« » 2025.1
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

공지사항

최근에 올라온 글

/*

CreateDIBSection

(DIB섹션 만드는 함수)



내    용 : 사용방법


사용목적 : 비트맵을 점단위로 빨리 조작하기위해


사용방법 : 1. DIB섹션을 만든다.

2. 메모리DC를 만들어 HBITMAP을 Select한다.

3. m_pDib를 이용해 점이나 그림을 그린다.

4. 메모리DC를 화면에 출력한다.


설 명

-----

DIB섹션을 만듦니다.

hDC를 픽셀단위로 제어할 수 있습니다.

24비트 전체화면(1024x768)은 약 2.3M byte 정도 소요됩니다.

32비트 전체화면(1024x768)은 약   3M byte 정도 소요됩니다.(32비트로 만들면, 성능이 향상됩니다.)


입력 : hDC,width,height,biBitCount


출력 : HBITMAP 리턴값 =DIB 비트맵

  BYTE **pBits =DIB 비트맵 데이터 포인터


주의사항 : 사용후 DeleteObject(pBitmap);해주어야합니다.

  리턴값 COLORREF는 BGR 순서임

*/

//DIB섹션은 B-G-R순이다.

//BITMAP(DDB)와 비교하여,DIB섹션의 장점은 화면이 커질 수록 메모리 복사가 적게 수행된다는 점이다.

//BITMAP(DDB)는 1픽셀의 정보를 읽거나,쓰기위해 화면 전체를 복사해야 한다.

//화면 크기가 작다면 DDB가 더 효율적일 수 있다.


//DIB의 구조 : BITMAPINFO+pal+image[]

//BITMAPINFO는 GetDIBits()로 얻을 수 있다.

//biBitCount=1,4,16,24,32

HBITMAP CreateDIBSection(HDC hDC,int width,int height,WORD biBitCount,BYTE **pDib,BITMAPINFO *pBI)

{

BITMAPINFO bi;


if(pBI==0)pBI=&bi;

pBI->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);

pBI->bmiHeader.biWidth=width;

pBI->bmiHeader.biHeight=-height;

pBI->bmiHeader.biPlanes=1;

pBI->bmiHeader.biBitCount=biBitCount;

pBI->bmiHeader.biCompression=BI_RGB;

pBI->bmiHeader.biSizeImage=0;//height * (DWORD)((width*biBitCount/8+3)&~3);

pBI->bmiHeader.biXPelsPerMeter=0;

pBI->bmiHeader.biYPelsPerMeter=0;

pBI->bmiHeader.biClrUsed=0;

pBI->bmiHeader.biClrImportant=0;

return(CreateDIBSection(hDC,(BITMAPINFO *)pBI,DIB_RGB_COLORS,(VOID **)pDib,NULL,0));

}


Posted by 안녕1999
, |

최근에 달린 댓글

글 보관함