графика под Windows

Katalina_r

Народ, подскажите, как сохранить результат работы проги в каком-нибудь формате, например, bmp.
Она у меня всякие графики рисует.
Пользовался Visial Studio C++

Natali099099

1)Метод ламерский - как делал я в курсовике =)
Жмёшь пимпу Print Screen , открываешь пэйнт и жмёшь ctrl+v
2)Метод программерский - гемориться и писать целую процедуру для сохранения в файл, это не для меня.
Выбирай, что тебе больше подходит 8)

sergei1969

проще bmp бывает только tga

#pragma pack(1) //без выравнивания

typedef struct {
u8 ImageIdLen; // 0 if no image id
u8 ColorMapType; // 0 if no color map for Hi & True color,1 for 256 color
u8 ImageType; // 1 256 color uncompressed, 2 is Hi or True color uncompressed
u16 CMapFirstEntry; // 0 (?)
u16 ColorNum; // 0 if no color map
u8 CMapEntryBitnum;// 0 if no color map, 0x18 (?) if color map present
u16 XOrigin; // 0 (?)
u16 YOrigin; // 0 (?)
u16 Width;
u16 Height;
u8 BPP;
u8 Order;// 0x20 - normal pos (left to right, top to bottom)
// 0 - left to right, bottom to top
} TGA_HEADER;

#pragma pack

после этого идёт массив пикселов, как обычно, построчно слева-направо сверху-вниз
вот собственно и всё
bmp немного сложнее, если надо, могу и его привести

___________________________________
да, забыл, это для непалитрового варианта. а для палитрового после хедера идёт сначала палитра - u8 pal[256*3]

golf555

Попользуйся GetDIBits...

Katalina_r

Э....а не подсажешь, этот кусок в прогу засунуть? Извини, что-то я не понял.Он сразу выведет результат в нужном формате?

Katalina_r

>GetDIBits
Если не сложно, можно подробнее...

sergei1969

это описание структуры. заполняешь её чем надо, пишешь в файл, потом пишешь собственно картинку, массив пикселей

Katalina_r

А какие у неё поля?

vikusik73

Нет, этот кусок нужно произнести перед монитором в качестве заклинания! И все получится!
Это формат файла tga. Тебе предлагают самому создать файл и записать туда нужное изображение.
Могу предложить немного инфы по bmp: . Там первые две лекции посвящены bmp.

sergei1969

так выше написано, блин
тебе что, прям кусок програмы нужен?

golf555

int GetDIBits(
HDC hdc, // handle to device context
HBITMAP hbmp, // handle to bitmap
UINT uStartScan, // first scan line to set in destination bitmap
UINT cScanLines, // number of scan lines to copy
LPVOID lpvBits, // address of array for bitmap bits
LPBITMAPINFO lpbi, // address of structure with bitmap data
UINT uUsage // RGB or palette index
);

HBITMAP CreateBitmap(
int nWidth, // bitmap width, in pixels
int nHeight, // bitmap height, in pixels
UINT cPlanes, // number of color planes used by device
UINT cBitsPerPel, // number of bits required to identify a color
CONST VOID *lpvBits // pointer to array containing color data
);

Katalina_r

благодарю.

sergei1969

это что, сильно проще?

shlyumper

Да, это сильно проще. Делаешь GetDIBBits, после чего WriteFile, и все. BMPшка готова.

Dasar

Посмотри file:\\z80\My Programs\2000.02.20.Маш.Графика.Fractal.VC
Там в исходниках, во View-шке есть сохранение файла
Оставить комментарий
Имя или ник:
Комментарий: