Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

Вывод большого битмапа   Найти похожие ветки 

 
alsov ©   (2005-06-09 11:20) [0]

Приветствую Мастера

Не получается загрузить в битмап расунок размером 4000х4000.
Помниться была тема, но найти не смог.

Подскажите реализацию
Заранее благодарен


 
-=XP=- ©   (2005-06-09 11:34) [1]

Не получается загрузить в битмап расунок размером 4000х4000.

И в чем это проявляется?


 
alsov ©   (2005-06-09 11:39) [2]

EOutOfResources "Недостаточно памяти для обработки команды"


 
-=XP=- ©   (2005-06-09 11:56) [3]

{$MAXSTACKSIZE 100000000}
program YourProgramName;


 
alsov ©   (2005-06-09 11:57) [4]

дело в том что у меня дллка,
{$MAXSTACKSIZE 100000000} устанавливать в ней или в загружающим её ехешнике?


 
-=XP=- ©   (2005-06-09 11:58) [5]

Или


 
alsov ©   (2005-06-09 12:08) [6]

не помогло


 
-=XP=- ©   (2005-06-09 12:15) [7]

У меня с нуля работает:

var
 BMP: TBitmap;
begin
 BMP := TBitmap.Create;
 BMP.PixelFormat := pf24bit;
 BMP.Width := 8000;
 BMP.Height := 8000;
 Image1.Picture.Graphic := BMP;
end;


Программа при этом 190 МБ памяти использует.
Приведите свой код.


 
TUser ©   (2005-06-09 12:28) [8]

> -=XP=- ©   (09.06.05 12:15) [7]

И из файла тоже грузится весьма быстро, WinXP, D7, C733, RAM 512M.


 
alsov ©   (2005-06-09 12:31) [9]

У меня ругань при изменении разеров битмапа Image

Есть процедурка


procedure Draw(ClientRect:TRect; PaintBmp: TBitmap);
begin
 {различные проверки}

 PaintBmp.Height := ClientRect.Bottom;
 PaintBmp.Width := ClientRect.Right;
 {почему то при изменении размеров Image размер его пикчера не меняется, поэтому такие две строки}

 {преобразование размеров Rect для вывода}

 PaintBmp.Canvas.StretchDraw(PictureRect{Rect для вывода}, PictureBmp {загруженная картинка (маленькая) для прорисовки});
end;



эту процедурку вызываю при изменении размеров формы (соответственно и имайджа)

Draw(img.ClientRect, img.Picture.Bitmap);


Значит это все в длл

В ехешнике в начале написал
{$MAXSTACKSIZE 100000000}


 
-=XP=- ©   (2005-06-09 12:36) [10]

Это вообще что? Для какой прикладной задачи?
Поясните, а то мне кажется, что решение у Вас не оптимальное.


 
alsov ©   (2005-06-09 12:46) [11]

значитса так
если в двух словах
есть картинка в бд (файл)
надо выводить картинку в имедж с дорисовкой на ней сетки (с определенными параметрами)

делаю так
гружу картинку в переменную
вавожу её в размер имежджа (copyrect на image.picture.bmp)
рисую на имедже сетку.

при реализации столкнулся с проблемой, когда изменяешь размер формы (на форме клиентом имейдж) размер битмапа на котором рисуешь не изменяется - решил изменять его руками

сейчас делаю zoom
т.к. надо сделать быстро решил сделать "влоб"
положил имейдж на скроллбокс и зменяю размер имейджа
как тока размер переваливает за 2500х2500 то вылетает ошибка


 
-=XP=- ©   (2005-06-09 13:15) [12]

Image.Picture.LoadFromFile(<FileName>);
Image.Stretch := true;
Image.Align := alClient;
Image.Autosize := false;


На Zoom Out:
Image.Align := alNone;
Image.SetBounds(Image.Left, Image.Top, Image.Width div 2, Image.Height div 2);


На Zoom In:
Image.Align := alNone;
Image.SetBounds(Image.Left, Image.Top, Image.Width * 2, Image.Height * 2);


На Fit:
Image.Align := alClient;

Сетку отрисовывать в Image.Paint. В противном случае Stretch будет удалять некоторые линии.


 
alsov ©   (2005-06-09 15:11) [13]

Не проходит
Мне кажется вся проблема в том что все находится в длл.
Попробовал сделать ехешником - все работает.

Щас написал длл и запихнул туда форму кодом

var
 bmp: TBitmap;
begin
 bmp := TBitmap.Create;
 bmp.Height := 8000;
 bmp.Width := 8000;

 imgCartogram.Picture.Graphic := bmp;
 


Не работает - вылетает пресловетая ошибка о недостатке ресурсов


 
Amoeba ©   (2005-06-09 16:07) [14]

Вообще-то с такими большими изображениями рекомендуется работать без загрузки в битмап и, соответственно без использования TImage, а путем отрисовки из MemoryMappedFile средствами API на PainBox. Демонстрационный пример (даже с Zoom"ом) есть в книжке Дарахвелидзе и Маркова. Если интересно, могу выслать мылом.


 
alsov ©   (2005-06-09 16:33) [15]

/Если интересно, могу выслать мылом./

Буду весьма признателен. Вышлите пожалуйста на _alsov@bk.ru


 
alsov ©   (2005-06-09 16:35) [16]

адрес без подчеркивания


 
Amoeba ©   (2005-06-09 17:23) [17]

Вышлю завтра. Это дело у меня лежит дома.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.046 c
3-1115971918
Delphi forever
2005-05-13 12:11
2005.06.29
Организация доступа к БД через Internet


3-1116561691
Ландух
2005-05-20 08:01
2005.06.29
Как обновить данные удаленной БД


4-1115209354
RedStranger
2005-05-04 16:22
2005.06.29
В чем разница мужу handle и hwnd?


1-1118032882
dp200
2005-06-06 08:41
2005.06.29
OpenDialog1


4-1114770645
Sour Smile
2005-04-29 14:30
2005.06.29
Работа с сетью из-под сервиса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский