C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[39229] Re:[급질문] BITMAP 많이 다뤄보신분! RGBQUAD를 만들려고 합니다.
@ㅏ^ㅏ달 [] 2091 읽음    2005-02-23 09:27
for(r=0;r<256;r+=51)
        for(g=0;g<256;g+=51)
            for(b=0;b<256;b+=51)
            {
                lpLogPalette->palPalEntry[i].peRed=r;
                m_pRGB[i].rgbRed=r;
                lpLogPalette->palPalEntry[i].peGreen=g;
                m_pRGB[i].rgbGreen=g;
                lpLogPalette->palPalEntry[i].peBlue=b;
                m_pRGB[i].rgbBlue=b;
                i++;
                if(i>256)
                    return TRUE;
            }




이건 256칼라 팔레트 만드는 방식입니다.
팔레트의 색상을 정하는 것은 여러가지 방법이 있을 수 있습니다.
일반적으로 같은 간격(51)의 색을 설정할때는 위코드처럼 하구요.
이미지가 대체로 특정색에 쏠려 있다면 많이 쓰이는 칼라부분을 작은 간격으로 쪼개서 만들고
적게 쓰이는 부분은 듬성듬성 만드는 거죠. 이거는 아주 특별한 경우이고요.
위에 처럼 쓰시면 됩니다.







서비 님이 쓰신 글 :
: 현재 Bitmap의 rowdata만 가지고
: 하나의 BITMAP을 만들려고 합니다.
:
: 그 중 BITMAPINFO 구조체를 만드는 과정에서
: BITMAPINFOHEADER는 만들었지만
: RGBQUAD에 Color수에 따라 배열을 생성하고
: ColorTable을 만들어주어야 합니다.
:
: 24Bit이상에서는 이 ColorTable을 만들지 않아도 되지만,
: 2, 16, 256 Color는 ColorTable을 직접 만들어야 합니다.
:
: 제가 기존에 Bitmap Handle을 받아서 처리 한 루틴입니다.
:
:     if(nColorData != 0){ // nColorData는 Color수
:         RGBQUAD* rgb = new RGBQUAD[nColorData];
:
:         CClientDC dc(NULL);
:         CDC memdc;
:
:         memdc.CreateCompatibleDC(&dc);
:         memdc.SelectObject(hBitmap);
:
:         for(int i = 0; i < GetDIBColorTable(memdc, 0, nColorData, rgb); i++){
:             pBmi->bmiColors[i].rgbRed        = rgb[i].rgbRed;
:             pBmi->bmiColors[i].rgbGreen        = rgb[i].rgbGreen;
:             pBmi->bmiColors[i].rgbBlue        = rgb[i].rgbBlue;
:             pBmi->bmiColors[i].rgbReserved    = rgb[i].rgbReserved;       
:         }
:
:         delete[] rgb;
:         rgb = NULL;
:     }
: DC의 컬러 정보를 가져와 알아서 ColorTable을 생성 시켜주어 편리했죠
: 하지만 DC가 없는 상황에서 ColorTable을 만들려니까
: 이노무 머리가 딸려서 알고리즘이 안되네요..
:
: 16 Color의 경우 Shift연산과 비트 연산이 들어가야하는데
: 노가다(?)로 컬러 정보를 입력하는건 너무 후퇴된 방법이고
:
: 2, 16, 256 Color Table을 생성하는 코드를 알고 계신분은 공유좀 해주시겠습니까?
:
: 예를 든다면 이런식으로죠
:
: GetColorTable(nColorData, rgb)

+ -

관련 글 리스트
22800 [급질문] BITMAP 많이 다뤄보신분! RGBQUAD를 만들려고 합니다. 서비 2527 2002/11/23
39229     Re:[급질문] BITMAP 많이 다뤄보신분! RGBQUAD를 만들려고 합니다. @ㅏ^ㅏ달 2091 2005/02/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.