Форум: "Media";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизНе работает большой Image Найти похожие ветки
← →
Jimmy (2006-08-14 00:42) [0]Когда в пустуй проект вставляю Image, то он позволяет делать свои размеры 5000х5000 пикселей и затем рисовать на нем. А когда пытаюсь это сделать в своем графическом редакторе с кучей разных объектов, то даже при попытке установить размеры Image"а 2200х2200 выдается ошибка "Не хватает ресурсов" на строке Image1.Canvas.Pen.Color:=clWhite. Подскажие как быть. Заранее спасибо.
← →
Мефисто (2006-08-14 13:00) [1]
> Подскажие как быть.
Не хавать ресурсов. Отрисовывать на TGraphicControl компанентах (например TPainBox).
> Image, то он позволяет делать свои размеры 5000х5000
Я так полагаю увеличиваются размеры TBitmap. Получаем приблизительно следующее: 5000х5000х24bit т.е. 3 байта на одну точку. Щитаем, сколько минимум скушается ресурсов?
← →
Jimmy (2006-08-14 15:23) [2]PaintBox действительно не выдает такой ошибки! По крайней мере пока.
Особо еще не тестировал. Но как тогда быть с отсутствующим свойством Picture, которое нужно для SaveToFile, и чем заменить
Form1.Image2.Picture.Assign(Form1.Image1.Picture.Bitmap);, Stretch ?
← →
Stexen (2006-08-14 17:52) [3]Вставь памяти в комп по больше :)
2Мефисто
Только в дельфийском тбитмапе каждая точка описывается integer"ом,по-моему, так что в памяти это будет занимать
5000*5000*32 :) а вообще использовать timage, если о нем идет речь, зло!!!
← →
Stexen (2006-08-14 17:54) [4]2Jimmy
У тебя же все равно все изображение не влазит на экран, так что выводи(храни в памяти) только то, что видит пользователь
← →
Stexen (2006-08-14 17:59) [5]2Jimmy
> Но как тогда быть с отсутствующим свойством Picture, которое
> нужно для SaveToFile, и чем заменить
> Form1.Image2.Picture.Assign(Form1.Image1.Picture.Bitmap);
> , Stretch ?
Bitmap.SaveToFile;
или читаем мануал по разным форматам графических файлов...
///
Var
Tmp: TBitmap;
begin
Tmp := TBitmap.Create;
Tmp.Width := Form1.Image1.Picture.Bitmap.Width;
Tmp.Height := Form1.Image1.Picture.Bitmap.Height;
BitBlt(ля ля ля); //не помню параметры на память, но в мануале точно есть.
end;
Stretch --> StretchBlt;
Вот и не надо ничего юзать от image
← →
Мефисто (2006-08-14 19:44) [6]
> Stexen (14.08.06 17:52) [3]
Конечно зло :) Это поймут, кто более менее представляет механизмы работы TImage, для начинающих это упрощенка для отрисовывания на канве TBitmap т.к. отрисовка OnPaint некоторых начинающих вгоняет в ступор (или некоторые вообще не знают для чего оно надо).
← →
Jimmy (2006-08-14 20:23) [7]1. Если работать с Bitmap:=TBitmap.Create; то он ведет себя также как и Image: при тех же самых размерах выдает ту же ошибку. Это не выход.
2. Тот же фотошоп вроде так и делает: если рисунок большой он часто обращается к диску. Вопрос в том КАК организовать работу с рисунком, если в памяти хранится только его часть?
3. Заметил интересную вещь: если громадных Image-ей несколько, но с предельно допустимыми размерами, то ошибки нет! Если пойти по этому пути (все изображение хранить например на 4-х image-х а не на одном), то тогда возникает всего несколько вопросов. Как рисовать на них - понятно. Как выводить рисунок на экран? И как сохранять в файл? Очень хотелось бы услышать Ваши советы по этим двум вопросам. Если можно поподробнее.
← →
Мефисто (2006-08-14 21:14) [8]
> 2. Тот же фотошоп вроде так и делает: если рисунок большой
> он часто обращается к диску. Вопрос в том КАК организовать
> работу с рисунком, если в памяти хранится только его часть?
>
Файл проецируемый в физическую память (посик по: CreateFileMapping).
> 3. Заметил интересную вещь: если громадных Image-ей несколько,
> но с предельно допустимыми размерами, то ошибки нет!
Повторим еще раз. Ресурсы не резиновые... :)
> Как выводить рисунок на экран?
Всмысле? не понял вопроса.
> И как сохранять в файл?
Зависит от реализации всего этого действа в целом. Изучив работу с проекцией файлов в физическую память, можно будет и сохранить нужную часть в файл. Если погуглить, то по CreateFileMapping можно найти немало статей.
← →
Stexen (2006-08-15 09:43) [9]Ну вот тот же фотошоп изначально разрабатывался под маки, в которых было очень плохо реализована работа с файлом подкачки, ввиду чего, он работает со своими файлами подкачки...
А с выводом наооборот ничего сложного нет, просто выводишь ту чусть картинки которая тебе нужна и все, для начала ты просто разберись например с форматом bmp и непосредственно считывай те части из файла которые тебе нужны...
ну и с CreateFileMapping тоже бы не помешало... :)
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c