2009. 9. 15. 09:11
Bitmap을 SetPixel로 그리기
2009. 9. 15. 09:11 in 프로그래밍/Let's Share it
ListBox나 ListCtrl등을 상속받아 재정의한 class를 만드는 경우가 있습니다.
그경우, 해당 class의 cpp/h만 있으면, 다른 곳에서도 사용할 수 있어, 그걸 이용한 배포가 가능하죠.
그러나, 상속받은 class에서 bitmap 같은 리소스가 있는 경우,
cpp/h/bmp/resource id 등이 공유되어야 배포가능합니다.
혹시나, bitmap 정보를 cpp로 옮길 수 만 있다면,
cpp/h만 있어도 공유가 가능할 텐데... 라는 아이디어로 만든 툴입니다.
내부에 있는 중요 부분(bmp 정보 구하는 부분)은, 구글링해서 긁어왔는데, 그 출처가 없어서 적지 못하겠네요.
분명, 중국분 블로그였던거 같은데...
혹시 저작권 문제가 될런지... ㅎㅎ
실행후, "Choose BMP"를 하시면,
해당 bmp에 대해, 다음과 같은 정보를 줍니다.
그경우, 해당 class의 cpp/h만 있으면, 다른 곳에서도 사용할 수 있어, 그걸 이용한 배포가 가능하죠.
그러나, 상속받은 class에서 bitmap 같은 리소스가 있는 경우,
cpp/h/bmp/resource id 등이 공유되어야 배포가능합니다.
혹시나, bitmap 정보를 cpp로 옮길 수 만 있다면,
cpp/h만 있어도 공유가 가능할 텐데... 라는 아이디어로 만든 툴입니다.
내부에 있는 중요 부분(bmp 정보 구하는 부분)은, 구글링해서 긁어왔는데, 그 출처가 없어서 적지 못하겠네요.
분명, 중국분 블로그였던거 같은데...
혹시 저작권 문제가 될런지... ㅎㅎ
실행후, "Choose BMP"를 하시면,
해당 bmp에 대해, 다음과 같은 정보를 줍니다.
------------
Height=1
Width=307
------------
inline VOID SetPixelTrans(IN CDC* pDC, IN INT nX, IN INT nY, COLORREF clr)
{
if (clr == RGB(255,0,255))
{
return;
}
pDC->SetPixel(nX, nY, clr);
}
SetPixelTrans(pDC,nX+0,nY+0,RGB(61,149,255));
SetPixelTrans(pDC,nX+1,nY+0,RGB(61,149,255));
SetPixelTrans(pDC,nX+2,nY+0,RGB(62,149,255));
SetPixelTrans(pDC,nX+3,nY+0,RGB(62,150,255));
...
Height=1
Width=307
------------
inline VOID SetPixelTrans(IN CDC* pDC, IN INT nX, IN INT nY, COLORREF clr)
{
if (clr == RGB(255,0,255))
{
return;
}
pDC->SetPixel(nX, nY, clr);
}
SetPixelTrans(pDC,nX+0,nY+0,RGB(61,149,255));
SetPixelTrans(pDC,nX+1,nY+0,RGB(61,149,255));
SetPixelTrans(pDC,nX+2,nY+0,RGB(62,149,255));
SetPixelTrans(pDC,nX+3,nY+0,RGB(62,150,255));
...
cpp에는 위 inline 함수를 포함시키시고,
Bitmap을 그려야 하는 함수,
예를 들어,
VOID DrawBitmapByPixel(INT nX, INT nY, CDC *pDC)
{
예를 들어,
VOID DrawBitmapByPixel(INT nX, INT nY, CDC *pDC)
{
}
에 SetPixelTrans(...) 부분들을 복사해 주시면 됩니다.
에 SetPixelTrans(...) 부분들을 복사해 주시면 됩니다.
그러면, 다른 resource 없이 cpp에서 bitmap을 그릴 수 있습니다.
(물론, cpp 사이즈가 굉장히 커질 것입니다.;;)
뭐... 작은 크기의 bmp는 충분히 compact하게 구현될 것입니다.
아참, inline 함수에 RGB(255,0,255)가 transparent pixel입니다.
(물론, cpp 사이즈가 굉장히 커질 것입니다.;;)
뭐... 작은 크기의 bmp는 충분히 compact하게 구현될 것입니다.
아참, inline 함수에 RGB(255,0,255)가 transparent pixel입니다.
'프로그래밍 > Let's Share it' 카테고리의 다른 글
CListCtrl의 내용을 프린터로 출력하기 (2) | 2009.09.23 |
---|---|
Thread Safe Memory Pool Templete 공유 (0) | 2009.09.22 |
Windows Service Program 제작을 위한 Skeleton 공유 (플러그인 이용) (0) | 2009.09.22 |
웹 크롤러(WebCrawler) 공유 (2) | 2009.09.16 |
RC2 Maker (0) | 2009.09.16 |