티스토리 뷰

vtk로 만들어진 이미지를 CBitmap 과 CDC를 이용하여 재구성 후 윈도우 에서 제공하는 함수를 이용해 Clipboard에 저장한다.

아~ 정말 vtk에 대한 구글링 자료가 너무 부족해서 이래저래 삽질을 많이 했다. 필요한 분이 있으면 도움이 되었음 좋겠다.


if(OpenClipboard())
{
int *size = this->RenderWindow->GetSize();

unsigned char *data = this->RenderWindow->GetPixelData(0, 0, size[0]-1, size[1]-1, 1);

CDC *pDC = GetDC();
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(pDC, size[0], size[1]);

unsigned long *bits = new unsigned long[size[0] * size[1]];
int i, j, k;
for (j=0; j<size[1]; j++)
  {
for (i=0; i<size[0]; i++)
  {
k = 3 * ((size[1] - j - 1) * size[0] + i);
bits[j*size[0]+i] = RGB(data[k+2], data[k+1], data[k]);
}
}
bitmap.SetBitmapBits(size[0] * size[1] * 4, (void *)bits);
delete []bits;

 // 참고 예제에는 없지만 GetPixelData 함수 내부에서 new를 하여 리턴하기 때문에 반듯이 delete 해야한다.
 delete []data;

  // 비트맵이 잘 만들어 졌는지 테스트
CImage img;    //CImage는 atlimage라 #include "atlimage.h" 필수
img.Attach((HBITMAP)bitmap);
HRESULT hr = img.Save("E:\\testsave.bmp");

EmptyClipboard();
SetClipboardData(CF_BITMAP, bitmap);
CloseClipboard();
bitmap.DeleteObject();
ReleaseDC(pDC);
}


참고.


'Programming > Library' 카테고리의 다른 글

[VTK] 이미지 저장하기  (0) 2016.08.25
[Poco] 파일 로그 쓰기  (0) 2016.05.04
[Poco] 디렉토리 생성 하기  (0) 2016.05.04
[VTK] VTK Chart point size 변경  (0) 2016.04.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함