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

Вниз

Проблема с большими Bitmap в Delphi7+KOL   Найти похожие ветки 

 
bobah   (2010-02-17 16:18) [0]

Помогите пожалуйста разобраться с такой ситуацией: не получается  работать с большими BMP (больше 5000х5000 пикселей, 24bpp)
Создаю KOL-проект, на KOL-форму кидаю KOLButton, на клик вешаю
procedure TForm1.Button1Click(Sender: PObj);
var tstBmp:PBitmap;
begin
  tstBmp:=NewBitmap(5000,5000);
  tstBmp.Canvas.Brush.Color:=clRed;
  tstBmp.Canvas.FillRect(tstBmp.BoundsRect);
end;

При клике на кнопку получаю "Runtime erroк 216 at …"
Если уменьшить разрешение все нормально проходит, но этот вариант не подходит.
Так же всё нормально проходит и с таким размером изображения (и с большим разрешением), если после создания Bitmap сохранить его в поток или в файл, т.е.
procedure TForm1.Button1Click(Sender: PObj);
var tstBmp:PBitmap;
begin
  tstBmp:=NewBitmap(5000,5000);
  tstBmp.SaveToFile("tst.bmp");
  tstBmp.Canvas.Brush.Color:=clRed;
  tstBmp.Canvas.FillRect(tstBmp.BoundsRect);
end;
работает без ошибок!

Что не так делаю? как заставить работать без ненужного сохранения в поток или в файл?


 
Sapersky   (2010-02-18 17:27) [1]

Вероятно, поможет tstBmp.fHandleType := bmDIB (это делается в SaveToFile) или создание через NewDIBBitmap. NewBitmap по умолчанию создаёт DDB-битмап, у которых меньше допустимый размер.


 
miek   (2010-02-18 20:42) [2]

Работать с БОЛЬШИМИ битмапами стандартными средствами (через GDI) вообще по определению не стоит. Будет большая и совершенно бесполезная нагрузка на память. Решение: MMF+StretchDIB.


 
Smile   (2010-02-18 22:19) [3]

Чёт я седня агрессивен:)
Я к тому, что плохо понимаю тягу к "КОЛ".
Уже и не в слишком далеком времени (прошлый век) мы, в качестве внешних носителей информации, использовали флоппи. Сначала 5.25 дюймовые (емкость 1.2 мгб), затем прорыв (условно 3-х дюймовые) емкостью аж 1.457 мгб.
Вот и подумалось, а почему бы сейчас не производить флоппики емкостью, скажем эдак 2.5 мгб, а может даже и поболее.

Собственно по этой причине мне и взгрутнулось при воспоминании КОЛ
Извините
:(


 
Barloggg   (2010-02-19 11:11) [4]

как раз-таки fillrect проходит. глюкает при попытке отрисовать.
не на каждом канвасе глючит кстати.
не знаю в чем тут дело, но глюка интересная.


 
Barloggg   (2010-03-05 11:38) [5]

я кстати с большими битмапами работал. но создавал их своим кодом, причем побайтово. и забацать битмапчик на 50мегов это было делом трех секунд загрузки неслабого процессора.
правда делал я его трансректально - писал в памяти (memorystream) файл в формате bmpфайла, потом создавал newBitmap и загружал его из этой памяти (bmp.loadfromstream)
и на экран выводился штатно.

да, мне тоже не очень нравилась эта двойная запись/загрузка но руки так и не дошли до оптимизации. оказывается по пути зарыты грабли. спасибо.



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

Форум: "KOL";
Текущий архив: 2019.02.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.001 c
4-1291421794
Kto_tyT_a
2010-12-04 03:16
2019.02.17
CreateProcess + Windows Srv 2003 + ERROR_FILE_NOT_FOUND


11-1267713848
RusSun
2010-03-04 17:44
2019.02.17
Хинт ы


15-1476631640
xayam
2016-10-16 18:27
2019.02.17
Кубик 2х2х2


11-1265359559
Barloggg
2010-02-05 11:45
2019.02.17
шрифт на канвасе выглядит разно!


11-1266412713
bobah
2010-02-17 16:18
2019.02.17
Проблема с большими Bitmap в Delphi7+KOL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский