TRect rect;
int cx, cy;
HBITMAP bitmap;
HDC pDC, MemDC;
int NbBytes;
BITMAPINFOHEADER header;
rect = Form1->GetClientRect();
cx = rect.right;
cy = rect.bottom;
cx = cx - cx % 4;
pDC = GetDC(Form1->Handle);
MemDC = CreateCompatibleDC(pDC );
bitmap = CreateCompatibleBitmap(pDC ,cx,cy);
SelectObject(MemDC, bitmap);
NbBytes = 3 * cx * cy;
//GetMem(pPixelData, NbBytes);
unsigned char * pPixelData=new unsigned char [NbBytes];
::glReadPixels(0,0,cx,cy,GL_RGB,GL_UNSIGNED_BYTE,pPixelData);
header.biWidth = cx;
header.biHeight = cy;
header.biSizeImage = NbBytes;
header.biSize = 40;
header.biPlanes = 1;
header.biBitCount = 3 * 8; // RGB
header.biCompression = 0;
header.biXPelsPerMeter = 0;
header.biYPelsPerMeter = 0;
header.biClrUsed = 0;
header.biClrImportant = 0;
HANDLE handle = (HANDLE)::GlobalAlloc (GHND,sizeof(BITMAPINFOHEADER) + NbBytes);
if(handle != NULL)
{
char *pData = (char *) ::GlobalLock((HGLOBAL)handle);
memcpy(pData,&header,sizeof(BITMAPINFOHEADER));
memcpy(pData+sizeof(BITMAPINFOHEADER),pPixelData,NbBytes);
::GlobalUnlock((HGLOBAL)handle);
EmptyClipboard();
SetClipboardData(CF_DIB,handle);
CloseClipboard();
}
DeleteDC(MemDC);
DeleteObject(bitmap);
delete [] pPixelData;
печать из openGL
Возникла необходимость распечатки изображений из openGL.
Пишу в C++Builder 6.0. ОС Windows 7 / XP
Раньше пытался печатать, но возникли проблемы: текст на бумагу не выходит. Решил пойти другим путем - экспорт в метафайл - не знаю как подступиться - инфу найти не могу. Далее совсем примитивно - просто скопировать в буфер. Исходник нарыл где-то в сети (он ниже) - результат черная картинка.
Помогите пожалуйста. Может быть наилучшее решение для меня - это экспорт в метафайл
Код:
[COLOR="red"]
__________________
Неужели за столько времени, не научились пользоваться тегами [сode][/сode]?
В следующий раз - нарушение гарантировано.
Сволочной модератор.
__________________[/COLOR]
pomnu kogda-to i sam smotrel podobnoe.
Модератор - сорри .... учту :(