|
안녕하세요? 개박살입니다.
먼저, 빌더에 입문을 환영합니다 ^^
폼에다가 Bitmap 데이타를 뿌리실려는 작업같은데, 저도 허접이지만 잠깐 설명을 드리자면,
윈도우는 DC가 있죠? 그걸 빌더에서는 Canvas라는 이름의 클래스로 캡슐화 해놓았죠
Canvas->Handle이 곧 HDC이죠
TForm은 Canvas를 가지고 있는데 이것을 이용해서 그리면 됩니다.
Bipmap 화일을 Canvas에 그리는 예제를 보여드리면,
Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
Bitmap1->LoadFromFile("C:\\Borland\\Borland Shared\\Images\\Splash\\256color\\factory.bmp");
Canvas->Brush->Bitmap = Bitmap1;
Canvas->FillRect(Rect(0,0,100,100));
delete Bitmap1;
이렇게 하는거죠
님께서는, 포인터로 이미지 데이타를 가지고 있는거 같은데 그부분은 저도 확실하지는 않는데, 일단
답변 드리자면, TStream을 이용해서 Canvas로 적용하는거 같습니다.
unsigned char ImageBuf[1000]; <<- 이것이 만약 이미지데이타라면,,
TMemoryStream *MyStream = new TMemoryStream();
MyStream->WriteBuffer(ImageBuf, sizeof(ImageBuf));
Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
Bitmap1->LoadFromStream(MyStream);
Canvas->Brush->Bitmap = Bitmap1;
Canvas->FillRect(Rect(0,0,100,100));
delete MyStream;
이런식으로 ^^; (이건 직접 해보지는... -- )
그럼 참고하세요~~
ps. 참고로, 빌더에서도 API를 그대로 사용해서 적용할수도 있답니다.
이재근 님이 쓰신 글 :
: 안녕하세요.. 완전 초보 2틀 됐습니다.
: MFC를 사용하다가 ㅡㅡ 높은 분의 명으로 인해 C++ Builder 를 사용하게 되었는뎅..
:
: 흐미.. 그림 그리기가 절 속터지게 하네여..
: 기꺼이 도움을 받을까 합니다.
:
: 폼에다가 256*256의 히스토 그램을 그리려고 합니다.
:
: Size szImg;
: szImg.cx = 256;
: szImg.cy = 256;
:
: bi = (BITMAPINFOHEADER*)MakeDIB(szImg);
:
: SetStretchBltMode(dc.m_hDC,COLORONCOLOR);
: StretchDIBits(dc.m_hDC,
: 0,128,256,256,
: 0,0,256,256,
: HIST, (LPBITMAPINFO)bi, DIB_RGB_COLORS, SRCCOPY);
:
: 위에 예제는 MFC에서 사용한건데여..
: HIST 에 이미지 데이터가 저장되어 있고.. 위에서 영역을 DIB로 바꾸고..
: 그냥 Copy 해준거거든여 ㅡㅡ;
: 근데.. C Builder 에서 어찌 해야 하나여?
: Canvas를 이용하여 그리라고 하는뎅.. 도무지 개념이 안서네여..
:
: 도움을 받겠습니다..
: 그럼.. 좋은 하루 보내세요
:
:
|