Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Не работает большой 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 вся ветка

Текущий архив: 2007.04.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.054 c
2-1175836445
voe
2007-04-06 09:14
2007.04.29
Скачки по коду.


11-1156687886
Александра
2006-08-27 18:11
2007.04.29
KOLListBox


6-1162281007
progmax
2006-10-31 10:50
2007.04.29
сетевой диск фтп сервера


15-1175354004
User454531
2007-03-31 19:13
2007.04.29
Чемпионат по поиску в Интернете


15-1175624279
Стас
2007-04-03 22:17
2007.04.29
PII и PIV