Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] 3 4 вперед Ctrl→ все |
Sapersky Member Откуда: Сообщений: 83 |
Flying-home, Забудьте про DDB (CreateCompatibleBitmap), в современных виндах от них никакой пользы нет. DIB 25000*25000 в 64-битном режиме создаётся, но работает ли рисование - не пробовал. b := TBitmap.Create; b.PixelFormat := pf24Bit; b.SetSize(25000, 25000);Вообще лучше искать библиотеку, которая может выделять память под битмап через GetMem. Graphics32 вроде так умеет, и даже через MMF: https://graphics32.github.io/Docs/Additional Topics/Back-Ends.htm но рисовать придётся только средствами самой библиотеки. При загрузке tiff могут быть проблемы, если загрузка не нативная, а скажем через GDI+, то опять же всё пойдёт через виндовые битмапы. |
22 фев 21, 23:04 [22284958] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
Так она вызывается в SetSize! SetSize - CopyImage - CopyBitmap - Result := GDICheck(CreateCompatibleBitmap(ScreenDC, bmWidth, bmHeight)) |
||||
22 фев 21, 23:18 [22284963] Ответить | Цитировать Сообщить модератору |
rgreat Member Откуда: Сообщений: 6582 |
Только в дельфи коммюнити могут сказать "свежая" про версию среды аж 8-летней давности. Работу с 4+ GB потоками давным давно уже поправили. А XE3 это всего 2-я версия среды с поддержкой x64. Сообщение было отредактировано: 22 фев 21, 23:16 |
||||
22 фев 21, 23:22 [22284966] Ответить | Цитировать Сообщить модератору |
Sapersky Member Откуда: Сообщений: 83 |
Flying-home, Если PixelFormat задан конкретный (не pfDevice по умолчанию), то должен создаваться DIB через CreateDIBSection. Заглянул в потроха - так и есть, CreateDIBSection в CopyBitmap. |
22 фев 21, 23:24 [22284968] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
Я до этого писал в BDS 2006, мне хватало. Тут захотелось много памяти, спросил пацанов в соседнем топике, что ставить. Посоветовали XE3, сказали, за глаза хватит. А тут, оказывается, не все так просто. И TStream с шестой версии не переписывался. |
||||||||
22 фев 21, 23:34 [22284972] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
Это уже лучше. Осталось загрузить имеющийся тифф в этот битмап. Спасибо. |
||||
22 фев 21, 23:35 [22284973] Ответить | Цитировать Сообщить модератору |
rgreat Member Откуда: Сообщений: 6582 |
Такая веселая хрень имхо вообще только в дельфи комьюнити и существует. ;) |
||||
22 фев 21, 23:39 [22284975] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
Не знаю, о каком комьюнити ты говоришь, я большей частью сам по себе. Мне для поделок хватало, и ладно. |
||||||||
22 фев 21, 23:42 [22284977] Ответить | Цитировать Сообщить модератору |
ъъъъъ Member Откуда: Сообщений: 1815 |
Да ладно. К нам один человечек на работу устраиваться приходил, он на C++ пишет, использует MS VS 6.0, и (по его словам) контора, где он раньше работал. |
||||||||
22 фев 21, 23:42 [22284979] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
В него битмап из файла не получается загрузить. Все тот же TStream больше 2 гигов не умеет. Весело! |
||||||||
22 фев 21, 23:44 [22284980] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
Так это ключевые слова! Раньше = 20 лет назад. |
||||||||
22 фев 21, 23:46 [22284981] Ответить | Цитировать Сообщить модератору |
rgreat Member Откуда: Сообщений: 6582 |
|
||||
22 фев 21, 23:48 [22284982] Ответить | Цитировать Сообщить модератору |
ъъъъъ Member Откуда: Сообщений: 1815 |
Зачем нам сипипишники. |
||||||||
23 фев 21, 00:03 [22284986] Ответить | Цитировать Сообщить модератору |
Sapersky Member Откуда: Сообщений: 83 |
Или смотреть сторонние библиотеки для загрузки Tiff, которые не используют стримы. FreeImage вроде не использует, ImagingLib и т.д. Хотя у них могут быть свои проблемы с загрузкой огромных картинок - что поделаешь, специфическая задача, мало кому это нужно. |
||||
23 фев 21, 01:03 [22284999] Ответить | Цитировать Сообщить модератору |
white_nigger Member Откуда: Тула Сообщений: 2471 |
Да не может gdi с подобной размерностью нормально работать. Прими как данность. Это уже много раз обсасывалось. Конкретно на своём компе я как-то вычислял максимальный размер битмапа, правда уже не помню точно, но до 30000 точно не дошло. Все подобные вещи рисуются по кускам/тайлам, как уже ранее сказали |
23 фев 21, 02:28 [22285011] Ответить | Цитировать Сообщить модератору |
Мудроглюков Member Откуда: Сообщений: 8319 |
Flying-home, Одной из генеральных задач при создании FireMonkey было предоставление возможностей для создания богатого графического интерфейса и конечно добавлена работа с большими графическими файлами. Есть вот специально для больших изображений TBitmapSurface (совместимый с TBitmap). ... PS Про TBitmapSurface так заявлено разработчиками FireMonkey. ////////////////////////////////////// PS Скажи - это КАРТУ рисуешь? Для карт есть специальные типы. PS Почему кусками не отрабатываешь? Лень думать над алгоритмом? |
23 фев 21, 10:34 [22285040] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
На спутниковом снимке хочу рисовать. Я готов смириться с разбиением на куски. Но не хочу зависеть от видюшки. Хочу рисовать в ОЗУ средствами ЦПУ. |
||||
23 фев 21, 12:39 [22285080] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
Пацаны говорят, что не получается на ней рисовать. Приходится бить на куски, загружать в обычный TBitmap и рисовать на нем. https://stackoverflow.com/questions/51523321/how-to-draw-fmx-surface-tbitmapsurface-on-fmx-graphics-tbitmap Сообщение было отредактировано: 23 фев 21, 13:08 |
||||
23 фев 21, 13:14 [22285101] Ответить | Цитировать Сообщить модератору |
defecator Member Откуда: Сообщений: 39697 |
Graphics32 попробуй. |
||||||||
23 фев 21, 14:15 [22285133] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
CreateDIBSection тоже не работает. Сделал картинку 25000 на 25000, сохранил в файл, а там меньше 2ГБ. Сделал 30000 на 30000, поймал ту же ошибку. |
||||
23 фев 21, 15:12 [22285169] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
А нет ли случайно в природе решений вроде виртуальной видеокарты? Чтобы подсистема GDI думала, что работает с видюшкой, а на самом деле использовалась обычная память компа? |
23 фев 21, 15:29 [22285178] Ответить | Цитировать Сообщить модератору |
white_nigger Member Откуда: Тула Сообщений: 2471 |
|
||||
23 фев 21, 15:39 [22285184] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
Он закончился на XE2 и, похоже, не 64-битный. Да на нем это и написано. https://graphics32.github.io/Docs/Installation.htm Написано только, что в критических секциях может использовать инструкции x64 процессоров. |
||||||||
23 фев 21, 15:55 [22285189] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
Если такое решение будет простым и надежным, пуркуа бы не па? Можно попытаться уточнить формулировку задачи: Есть много больших картинок (> 2ГБ), на которых надо рисовать объекты размером с эти картинки. Есть много памяти и ядер, но мало видеокарт и мало видеопамяти. Если я пойду путем разбиения картинки на приемлемые для GDI кусочки, я потеряю в производительности, потому что один поток будет ждать, пока предыдущий освободит видеопамять. |
||||||||
23 фев 21, 16:07 [22285197] Ответить | Цитировать Сообщить модератору |
Flying-home Member Откуда: kart.vrostove.net Сообщений: 15000 |
А все эти современные новомодные процессоры с графическими ядрами ограничены по объему памяти, которую могут использовать? Я могу им в биосе отдать 60 ГБ ОЗУ? |
23 фев 21, 16:15 [22285200] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] 3 4 вперед Ctrl→ все |
Все форумы / Delphi | ![]() |