Форум: "Основная";
Текущий архив: 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.045 c