Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Разрешение графики / 19 сообщений из 19, страница 1 из 1
01.05.2006, 11:19
    #33700119
Лёлик2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
У рисунка есть размер в пикселах и в сантиметрах (определяемый разрешением и влияющим на размер напечатанного рисунка). Добавил я на форму компонент Image1, задал его размеры Height=200 и Width=200 (в инспекторе обектов) написал такие строки (для эксперимента):
Image1->Canvas->Pixels[3][3]=clBlack;
if (SaveDialog1->Execute())
{Image1->Picture->SaveToFile(SaveDialog1->FileName);}

Выполнив программу открыл полученный файл в PhotoShop'e на странице Изображение-Размер изображения были такие данные:
Количество пикселей:
ширина 200 пикселей
высота 200 пикселей

Размер документа:
ширина 2,778 дюйма
высота 2,778 дюйма
разрешение 72 пиксели/дюйм

ВОПРОС: как мне самому регулировать разрешение Канвы?
Использую C++ Builder 6.0. Спасибо за прямой или косвенный (подсказка где почитать) ответ.
...
Рейтинг: 0 / 0
02.05.2006, 18:43
    #33702515
Лёлик2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
Скажите хотя-бы почему нет ответов. Это слишком сложно или неохота отвечать?
...
Рейтинг: 0 / 0
03.05.2006, 12:04
    #33703627
pandrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
Никогда сам этого не делал, но попробуй посмотри функцию
SetBitmapDimensionEx
...
Рейтинг: 0 / 0
04.05.2006, 00:23
    #33705447
Лёлик2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
pandrewНикогда сам этого не делал, но попробуй посмотри функцию
SetBitmapDimensionEx

Вот что нашёл:
pandrewФункция SetBitmapDimensionEx назначает предпочтительные размеры точечному рисунку. Эти размеры могут быть использованы приложениями; однако они не используются системой.

Синтаксис
BOOL SetBitmapDimensionEx(
HBITMAP hBitmap, // дескриптор рисунка
int nWidth, // ширина рисунка в .01 мм
int nHeight, // высота рисунка в .01 мм
LPSIZE lpSize // исходные размеры
);


Параметры
hBitmap

[in] Дескриптор точечного рисунка. Точечным рисунком не может быть битовый образ DIB-секции.
nWidth

[in] Устанавливает ширину точечного рисунка, в единицах измерения равных .01 миллиметра.
nHeight

[in] Устанавливает высоту точечного рисунка, в единицах измерения равных .01 миллиметра.
lpSize

[out] Указатель на структуру SIZE, которая принимает предыдущие размеры точечного рисунка. Этот указатель может иметь значение ПУСТО (NULL).

Написал я:
Image1->Canvas->Pixels[3][3]=clBlack;
SetBitmapDimensionEx(Image1->Canvas->Handle,1000,1000,NULL);
if (SaveDialog1->Execute())
{Image1->Picture->SaveToFile(SaveDialog1->FileName);}


По идее размер сохранённого рисунка должен был быть 10 на 10 мм. Но эффекта нет. Разрешение по прежнему 72 пиксели/дюйм и размер рисунка определяется исходя из него и НЕ равен 10 на 10 мм.
Где я ошибся?
...
Рейтинг: 0 / 0
04.05.2006, 14:50
    #33707139
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
Сколько помню, разрешение BMP нигде особенно не учитывалось, и игнорировалось при любом удобном случае. Залезь в исходники VCL, может, оно вообще не используется? Если так, придёться свою сохранялку писать (для BMP это не трудно)
...
Рейтинг: 0 / 0
04.05.2006, 17:50
    #33707932
Лёлик2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
ErVСколько помню, разрешение BMP нигде особенно не учитывалось, и игнорировалось при любом удобном случае. Залезь в исходники VCL, может, оно вообще не используется? Если так, придёться свою сохранялку писать (для BMP это не трудно)

Исходников у меня нет, да если бы и были я бы в них ничего не понял, я так сказать ОЧЕНЬ начинающий. Но могу опровергнуть то что функция SaveToFile не учитывает разрешение вот чем: если в компонент Image загрузить bmp-картинку с разрешением отличным от 72 точки/дюйм, нарисовать на канве поверх этого рисунка что-то и потом дать команду SaveToFile то получается bmp-картинка с тем же разрешением что и загруженная ранее!!!

И ещё написал вот так:
Graphics::TBitmap *Bitmap=new Graphics::TBitmap();
...
Image1->Canvas->Pixels[3][3]=clBlack;
Bitmap->Assign(Image1->Picture);
if (!SetBitmapDimensionEx(Bitmap->Handle,1000,1000,NULL)) Beep();
if (SaveDialog1->Execute())
{Bitmap->SaveToFile(SaveDialog1->FileName);}

Функция SetBitmapDimensionEx вызывается удачно (возвращает true - узнаю по звуку) и главное: если сделать так как я писал выше т. е. загрузить bmp-картинку в Image с разрешением отличным от 72 точки/дюйм, то вызов этой функции сбрасывает разрешение на стандартное (72 точки/дюйм). Вывод функция частично работает но чего то ей не хватает. Чего? Подскажите пожалуйста!
...
Рейтинг: 0 / 0
06.05.2006, 19:14
    #33713980
Лёлик2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
Ну помогите же! Последний штрих остался. Help!!!
...
Рейтинг: 0 / 0
16.05.2006, 17:14
    #33730547
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
Лёлик2Ну помогите же! Последний штрих остался. Help!!!
Слушай! Тебе не кажеться, что разрешение формы оверрайдит разрешение, которое ты компоненту TImage устанавливаешь? Создай временный TGraphic, вызови TGraphic.Assign(TImage) и делай с ним, что хочешь...
...
Рейтинг: 0 / 0
18.05.2006, 19:39
    #33736887
Лёлик2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
ErV Лёлик2Ну помогите же! Последний штрих остался. Help!!!
Слушай! Тебе не кажеться, что разрешение формы оверрайдит разрешение, которое ты компоненту TImage устанавливаешь? Создай временный TGraphic, вызови TGraphic.Assign(TImage) и делай с ним, что хочешь...


А строка Bitmap->Assign(Image1->Picture); разве не это?(см.выше)
...
Рейтинг: 0 / 0
20.05.2006, 13:28
    #33740257
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
Лёлик2 ErV Лёлик2Ну помогите же! Последний штрих остался. Help!!!
Слушай! Тебе не кажеться, что разрешение формы оверрайдит разрешение, которое ты компоненту TImage устанавливаешь? Создай временный TGraphic, вызови TGraphic.Assign(TImage) и делай с ним, что хочешь...


А строка Bitmap->Assign(Image1->Picture); разве не это?(см.выше)
Не это. Я довольно давно с VCL работал, и, судя по всему, опечатался - имел в виду TPIcture. Один из этих двух классов (TGraphic, TPicture), при "Assign'e" может работать с ЛЮбОЙ графикой - не только BMP. а для TBitmap->Assign картинка будет сконвертирована в BMP...
...
Рейтинг: 0 / 0
20.05.2006, 16:10
    #33740381
Лёлик2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
ErV
Не это. Я довольно давно с VCL работал, и, судя по всему, опечатался - имел в виду TPIcture. Один из этих двух классов (TGraphic, TPicture), при "Assign'e" может работать с ЛЮбОЙ графикой - не только BMP. а для TBitmap->Assign картинка будет сконвертирована в BMP...

Не пойму тебя. Мне и нужно BMP. Если не трудно: какие строки какими ты передлагаешь заменить?
...
Рейтинг: 0 / 0
21.05.2006, 13:57
    #33740977
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
Лёлик2 ErV
Не это. Я довольно давно с VCL работал, и, судя по всему, опечатался - имел в виду TPIcture. Один из этих двух классов (TGraphic, TPicture), при "Assign'e" может работать с ЛЮбОЙ графикой - не только BMP. а для TBitmap->Assign картинка будет сконвертирована в BMP...

Не пойму тебя. Мне и нужно BMP. Если не трудно: какие строки какими ты передлагаешь заменить?

Я имел в виду, что если использовать TPicture, то поддерживаться будет ЛЮБОЙ формат, производный от TGraphic, не только BMP. Возможно, что будет более эффективное представление данных (я TPicture не ковырял, поэтому не уверен), и т.д. и т.п. а в случае с TBitmap данные будут стопроцентно сконвертированы в формат BMP (который очень хорошо память кушает).

ЗЫ: Короче, мне уже самому интересно стало, дома поставлю Дельфю/Builder, залезу в исходники и посмотрю, что там с сохранением разрешения... :)
...
Рейтинг: 0 / 0
22.05.2006, 11:03
    #33741928
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
Лёлик2ВОПРОС: как мне самому регулировать разрешение Канвы?


А при чем здесь вообще разрешение Канвы ? Какое у нее разрешение никак не влияет на то, что сохраняется в файл, по моему мнению.

Также подозреваю, что разрешение канвы (я б лучше сказал холста) в VCL задается разрешением окна, в котором он (холст) рисуется. А разрешение окна задается режимом работы Win32-устройства, в котором это окно. Например, дисплея или принтера.
...
Рейтинг: 0 / 0
22.05.2006, 11:10
    #33741955
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
Короче, новости две - плохая и хорошая :).
плохая - в BITMAPINFOHEADER (структура, где храниться инфа о БМП файлах) есть поле - что-то типа bmXPelsPerMeter, bmYPelsPerMeter.
эти поля задают кол-во точек... на метр как я понял.
Так вот, в TBitMap их изменить НЕЛЬЗЯ, но они считываются при загрузки картинки, и больше нигде не меняются. Соответственно, при создании нового БМП, эти поля инициализируются нулями и система назначает им 72 точки на дюйм(кажется, это разрешение в системе по умолчанию?).

В VCL для TBitmap нет property, отвечающего за кол-во точек на дюйм. Раз нет проперти, ломится функциями типа SetBitmapDimensionsEx не стоит, так как разрешение системной битмапки (внутри системы) изменится, а вот соответсвующее поле структуры - нет.

Рекомендую написать своё сохранение, благо это несложно -
формат БМП задаётся системными(виндовскими) структурами -
BITMAPFILEHEADER, BITMAPINFOHEADER.
поковыряй в справке по Win32 следующие слова:
BITMAPINFOHEADER
BITMAPFILEHEADER
GetDIBits
Capturing Image
CreateCompatibleBitmap.

суть следующая - ты создаёшь временный массив под пиксели, экземпляры InfoHeader и BITMAPFILEHEADER, заполняешь их, получаешь пиксели при помощи GetDIBits (В массив), потом сохраняешь BITMAPFILEHEADER, BITMAPINFOHEADER, палитру(если есть) и пиксели.
Подробный код (может быть) потом вышлю - не успел накатать вчера в 2 часа ночи, когда до исходников VCL добрался. :)
...
Рейтинг: 0 / 0
22.05.2006, 11:30
    #33742033
Лёлик2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
ErVКороче, новости две - плохая и хорошая :).
плохая - в BITMAPINFOHEADER (структура, где храниться инфа о БМП файлах) есть поле - что-то типа bmXPelsPerMeter, bmYPelsPerMeter.
эти поля задают кол-во точек... на метр как я понял.
Так вот, в TBitMap их изменить НЕЛЬЗЯ, но они считываются при загрузки картинки, и больше нигде не меняются. Соответственно, при создании нового БМП, эти поля инициализируются нулями и система назначает им 72 точки на дюйм(кажется, это разрешение в системе по умолчанию?).

В VCL для TBitmap нет property, отвечающего за кол-во точек на дюйм. Раз нет проперти, ломится функциями типа SetBitmapDimensionsEx не стоит, так как разрешение системной битмапки (внутри системы) изменится, а вот соответсвующее поле структуры - нет.

Рекомендую написать своё сохранение, благо это несложно -
формат БМП задаётся системными(виндовскими) структурами -
BITMAPFILEHEADER, BITMAPINFOHEADER.
поковыряй в справке по Win32 следующие слова:
BITMAPINFOHEADER
BITMAPFILEHEADER
GetDIBits
Capturing Image
CreateCompatibleBitmap.

суть следующая - ты создаёшь временный массив под пиксели, экземпляры InfoHeader и BITMAPFILEHEADER, заполняешь их, получаешь пиксели при помощи GetDIBits (В массив), потом сохраняешь BITMAPFILEHEADER, BITMAPINFOHEADER, палитру(если есть) и пиксели.
Подробный код (может быть) потом вышлю - не успел накатать вчера в 2 часа ночи, когда до исходников VCL добрался. :)

Чесно говоря это не мой уровень. Тут мне написали одну функцию но она работает очень нестабильно:
bool SetNewXYPelsPerMeter(const char *file_name, LONG NewXPelsPerMeter, LONG NewYPelsPerMeter)
{
HANDLE hBmpFile = CreateFile(file_name, GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hBmpFile == INVALID_HANDLE_VALUE) return false;

BITMAPINFOHEADER bih;
DWORD bytes = 0;
SetFilePointer(hBmpFile, (LONG)sizeof(BITMAPFILEHEADER), (PLONG)&bytes, FILE_BEGIN);
ReadFile(hBmpFile, &bih, sizeof(BITMAPINFOHEADER), &bytes, NULL);
if (bytes != sizeof(BITMAPINFOHEADER))
{
CloseHandle(hBmpFile);
return false;
}

bih.biXPelsPerMeter = NewXPelsPerMeter;
bih.biYPelsPerMeter = NewYPelsPerMeter;

bytes = 0;
SetFilePointer(hBmpFile, (LONG)sizeof(BITMAPFILEHEADER), (PLONG)&bytes, FILE_BEGIN);
WriteFile(hBmpFile, &bih, sizeof(BITMAPINFOHEADER), &bytes, NULL);

CloseHandle(hBmpFile);

return true;
}


Если бы ты сказал что тут не так, был бы очень признателен!
...
Рейтинг: 0 / 0
22.05.2006, 15:17
    #33742847
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
Лёлик2 ErVКороче, новости две - плохая и хорошая :).
плохая - в BITMAPINFOHEADER (структура, где храниться инфа о БМП файлах) есть поле - что-то типа bmXPelsPerMeter, bmYPelsPerMeter.
эти поля задают кол-во точек... на метр как я понял.
Так вот, в TBitMap их изменить НЕЛЬЗЯ, но они считываются при загрузки картинки, и больше нигде не меняются. Соответственно, при создании нового БМП, эти поля инициализируются нулями и система назначает им 72 точки на дюйм(кажется, это разрешение в системе по умолчанию?).

В VCL для TBitmap нет property, отвечающего за кол-во точек на дюйм. Раз нет проперти, ломится функциями типа SetBitmapDimensionsEx не стоит, так как разрешение системной битмапки (внутри системы) изменится, а вот соответсвующее поле структуры - нет.

Рекомендую написать своё сохранение, благо это несложно -
формат БМП задаётся системными(виндовскими) структурами -
BITMAPFILEHEADER, BITMAPINFOHEADER.
поковыряй в справке по Win32 следующие слова:
BITMAPINFOHEADER
BITMAPFILEHEADER
GetDIBits
Capturing Image
CreateCompatibleBitmap.

суть следующая - ты создаёшь временный массив под пиксели, экземпляры InfoHeader и BITMAPFILEHEADER, заполняешь их, получаешь пиксели при помощи GetDIBits (В массив), потом сохраняешь BITMAPFILEHEADER, BITMAPINFOHEADER, палитру(если есть) и пиксели.
Подробный код (может быть) потом вышлю - не успел накатать вчера в 2 часа ночи, когда до исходников VCL добрался. :)

Чесно говоря это не мой уровень. Тут мне написали одну функцию но она работает очень нестабильно:
bool SetNewXYPelsPerMeter(const char *file_name, LONG NewXPelsPerMeter, LONG NewYPelsPerMeter)
{
HANDLE hBmpFile = CreateFile(file_name, GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hBmpFile == INVALID_HANDLE_VALUE) return false;

BITMAPINFOHEADER bih;
DWORD bytes = 0;
SetFilePointer(hBmpFile, (LONG)sizeof(BITMAPFILEHEADER), (PLONG)&bytes, FILE_BEGIN);
ReadFile(hBmpFile, &bih, sizeof(BITMAPINFOHEADER), &bytes, NULL);
if (bytes != sizeof(BITMAPINFOHEADER))
{
CloseHandle(hBmpFile);
return false;
}

bih.biXPelsPerMeter = NewXPelsPerMeter;
bih.biYPelsPerMeter = NewYPelsPerMeter;

bytes = 0;
SetFilePointer(hBmpFile, (LONG)sizeof(BITMAPFILEHEADER), (PLONG)&bytes, FILE_BEGIN);
WriteFile(hBmpFile, &bih, sizeof(BITMAPINFOHEADER), &bytes, NULL);

CloseHandle(hBmpFile);

return true;
}


Если бы ты сказал что тут не так, был бы очень признателен!
Можно и так, но здесь - изменяется разрешение уже СУЩЕСТВУЮЩЕГО файла.
То есть - он должен существовать.

Я тебе предлагал из существующей битмапки взять пиксели и сохранить их с нужным тебе разрешением своей процедурой. Код сегодня дома поковыряю, если напишу, тогда скину.

ЗЫ: И что значит - нестабильно ?
Что глючит? Расскажи - в чём проблема, так как код корректен, вроде бы.
...
Рейтинг: 0 / 0
23.05.2006, 16:55
    #33746282
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
процедура сохранения с возможностью задания разрешения (сохраняет стабильно в 24битный бмп, но это можно исправить).
палитра в этом варианте тоже не поддерживается, но это тоже можно вылечить, если постараться.
пока писал, нашёл пару глюков в билдере (sizeof(BITMAPFILEHEADER)==16, а сумма размеров всех полей - == 14, первое поле в сохранённом файле занимает 4 байта вместо двух). :(

паскалёвский вариант работает без хаков.

код под C++ Builder:
//------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender){
#pragma push
#pragma option -a1
if (!SavePictureDialog1->Execute()) return;
Graphics::TBitmap* bmp = new Graphics::TBitmap();
bmp->Assign(Image1->Picture);

TFileStream* fbmp = new TFileStream(SavePictureDialog1->FileName, fmCreate);

//BITMAPFILEHEADER hdr;
struct {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
}hdr;//по непонятным мне причинам после сохранения первое поле
//в файле занимает 4(!) байта вместо двух, если использовать
//BITMAPFILEHEADER, как вообще-то и следует поступать
//из-за этого глюка сохранённые таким образом бмпшки не читаются,
//пришлось переобъявить структуру... :(

ZeroMemory(&hdr, sizeof(hdr));
hdr.bfType = 0x4D42;
hdr.bfSize = bmp->Width*bmp->Height*3;
hdr.bfOffBits = sizeof(BITMAPINFOHEADER)+sizeof(hdr);
fbmp->Write(&hdr, sizeof(hdr));

BITMAPINFO bmpinfo;
ZeroMemory(&bmpinfo, sizeof(bmpinfo));
BITMAPINFOHEADER& info = bmpinfo.bmiHeader;

info.biSize = sizeof(BITMAPINFOHEADER);
info.biWidth = bmp->Width;
info.biHeight = bmp->Height;
info.biPlanes = 1;
info.biBitCount = 24;
info.biCompression = BI_RGB;
info.biSizeImage = info.biWidth*info.biHeight*info.biBitCount/8;

//здесь можешь задать свои размеры/количество точек... на метр(?)
info.biXPelsPerMeter = 1000;
info.biYPelsPerMeter = 1000;
info.biClrImportant = 0;
info.biClrUsed = 0;

fbmp->Write(&info, sizeof(BITMAPINFOHEADER));

byte* pixels = new byte[info.biSizeImage];

GetDIBits(bmp->Canvas->Handle, bmp->Handle, 0, bmp->Height, pixels, &bmpinfo, DIB_RGB_COLORS);

fbmp->Write(pixels, info.biSizeImage);

delete[] pixels;
delete fbmp;
delete bmp;
#pragma pop
}
//------------------------------------------

на паскале
//------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
var
bmpfile: TFileStream;
pixels: array of byte;
bmphdr: TBITMAPFILEHEADER;
bmpinfo: TBITMAPINFO;
bmp: TBitmap;
begin
if not SavePictureDialog1.Execute then exit;
bmp := TBitmap.Create;
bmp.Assign(Image1.Picture);

FillChar(bmphdr, 0, sizeof(bmphdr));
FillChar(bmpinfo, 0, sizeof(bmpinfo));
bmphdr.bfType := $4D42;
bmphdr.bfSize := bmp.Width*bmp.Height*3;
bmphdr.bfOffBits := sizeof(bmphdr)+sizeof(bmpinfo.bmiHeader);

bmpfile := TFileStream.Create(SavePictureDialog1.FileName, fmCreate);

bmpfile.Write(bmphdr, sizeof(bmphdr));

bmpinfo.bmiHeader.biSize := sizeof(TBITMAPINFOHEADER);
bmpinfo.bmiHeader.biWidth := bmp.Width;
bmpinfo.bmiHeader.biHeight := bmp.Height;
bmpinfo.bmiHeader.biPlanes := 1;
bmpinfo.bmiHeader.biBitCount := 24;
bmpinfo.bmiHeader.biCompression := BI_RGB;
bmpinfo.bmiHeader.biSizeImage := bmpinfo.bmiHeader.biWidth*bmpinfo.bmiHeader.biHeight*bmpinfo.bmiHeader.biBitCount div 8;
bmpinfo.bmiHeader.biXPelsPerMeter := 1000;//пишешь свои размеры
bmpinfo.bmiHeader.biYPelsPerMeter := 1000;//пишешь свои размеры
bmpinfo.bmiHeader.biClrUsed := 0;
bmpinfo.bmiHeader.biClrImportant := 0;

SetLength(pixels, bmpinfo.bmiHeader.biSizeImage);

GetDIBIts(bmp.Canvas.Handle, bmp.Handle, 0, bmp.Height, @pixels[0], bmpinfo, DIB_RGB_COLORS);

bmpfile.Write(bmpinfo.bmiHeader, sizeof(bmpinfo.bmiHeader));
bmpfile.Write(pixels[0], bmpinfo.bmiHeader.biSizeImage);

pixels := nil;
bmpfile.Free;
bmp.Free;
end;
//------------------------------------------


кстати, предложенный тобой код мог "работать нестабильно" из-за той-же самой глюки, когда
1е поле структуры BITMAPFILEHEADER занимает в файле 4 байта вместо двух, хотя оно и WORD.(я так понимаю,
это DataAlignment при компиляции package был равен 4. :(.)

Чтобы обойти этот глюк, можно в исходном коде, который ты писал, заменить sizeof(BITMAPFILEHEADER) на 14.
...
Рейтинг: 0 / 0
24.05.2006, 00:56
    #33747034
Лёлик2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
СПАСИБО ОГРОМНОЕ!!! Работает! Я уже было потерял надежду. В очередной раз убедился что в мире не без добрых людей. Ещё раз спасибо.
...
Рейтинг: 0 / 0
24.05.2006, 14:24
    #33748559
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрешение графики
Лёлик2 СПАСИБО ОГРОМНОЕ!!! Работает! Я уже было потерял надежду. В очередной раз убедился что в мире не без добрых людей. Ещё раз спасибо.
Пожалуйста. :) рад был помочь :).

ЗЫ. Поддержку палитры не забудь добавить, если потребуется, а то всё сохраняется в 24бит RGB. :)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Разрешение графики / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]