powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Разрешение графики
19 сообщений из 19, страница 1 из 1
Разрешение графики
    #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
Разрешение графики
    #33702515
Лёлик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите хотя-бы почему нет ответов. Это слишком сложно или неохота отвечать?
...
Рейтинг: 0 / 0
Разрешение графики
    #33703627
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никогда сам этого не делал, но попробуй посмотри функцию
SetBitmapDimensionEx
...
Рейтинг: 0 / 0
Разрешение графики
    #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
Разрешение графики
    #33707139
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько помню, разрешение BMP нигде особенно не учитывалось, и игнорировалось при любом удобном случае. Залезь в исходники VCL, может, оно вообще не используется? Если так, придёться свою сохранялку писать (для BMP это не трудно)
...
Рейтинг: 0 / 0
Разрешение графики
    #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
Разрешение графики
    #33713980
Лёлик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну помогите же! Последний штрих остался. Help!!!
...
Рейтинг: 0 / 0
Разрешение графики
    #33730547
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лёлик2Ну помогите же! Последний штрих остался. Help!!!
Слушай! Тебе не кажеться, что разрешение формы оверрайдит разрешение, которое ты компоненту TImage устанавливаешь? Создай временный TGraphic, вызови TGraphic.Assign(TImage) и делай с ним, что хочешь...
...
Рейтинг: 0 / 0
Разрешение графики
    #33736887
Лёлик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ErV Лёлик2Ну помогите же! Последний штрих остался. Help!!!
Слушай! Тебе не кажеться, что разрешение формы оверрайдит разрешение, которое ты компоненту TImage устанавливаешь? Создай временный TGraphic, вызови TGraphic.Assign(TImage) и делай с ним, что хочешь...


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

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

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

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

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


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

Также подозреваю, что разрешение канвы (я б лучше сказал холста) в VCL задается разрешением окна, в котором он (холст) рисуется. А разрешение окна задается режимом работы Win32-устройства, в котором это окно. Например, дисплея или принтера.
...
Рейтинг: 0 / 0
Разрешение графики
    #33741955
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
Разрешение графики
    #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
Разрешение графики
    #33742847
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
Разрешение графики
    #33746282
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
Разрешение графики
    #33747034
Лёлик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО ОГРОМНОЕ!!! Работает! Я уже было потерял надежду. В очередной раз убедился что в мире не без добрых людей. Ещё раз спасибо.
...
Рейтинг: 0 / 0
Разрешение графики
    #33748559
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лёлик2 СПАСИБО ОГРОМНОЕ!!! Работает! Я уже было потерял надежду. В очередной раз убедился что в мире не без добрых людей. Ещё раз спасибо.
Пожалуйста. :) рад был помочь :).

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


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