Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> bitmap большого размера 
:(
    Опции темы
gonzales
Дата 26.10.2011, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 13.3.2006

Репутация: 1
Всего: 2



Уважаемые форумчане!!!

собственно сабж,
как создать, именно создать пустой TBitmap, чтобы впроследствии на него можно было отрисовать то, что мне нужно средствами GDI+.
Примитивный пример
Код

bitmap:=tbitmap.Create;
bitmap.Width:=20000;
bitmap.Height:=20000;


и упираемся в нехватку памяти. 
Вопрос собственно такой, можно ли создать bitmap не в памяти а на жестком диске, но при этом иметь возможность обратиться к его canvas.

Заранее благодарю
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
DarkProg
Дата 26.10.2011, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 1
Всего: 19



Я не понял, а зачем такой большой bitmap? Он же никогда не влезет в экран...


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Antimol
Дата 26.10.2011, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 28.7.2007
Где: Украина, Киев

Репутация: нет
Всего: 4



Похоже что человек будет рисовать карту. Лучше рисовать динамически в зависимости от региона, который показывается
--------------------
Лучшее спасибо это "+" к репутации.   Мой блог: ИНФОРМАТИЗАЦИЯ, и mirsovetov.net. Написание программ, исправление ошибок, статьи....
PM MAIL WWW ICQ   Вверх
VictorTsaregorodtsev
Дата 26.10.2011, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.7.2006

Репутация: нет
Всего: 8



Цитата(gonzales @  26.10.2011,  16:19 Найти цитируемый пост)
можно ли создать bitmap не в памяти а на жестком диске, но при этом иметь возможность обратиться к его canvas.

Создать можно. Создаете файл нужного размера (размер заголовка плюс размер картинки при том или ином числе битов на пиксел) и пишете в него значения полей заголовочных структур. Структуры эти простые, ВинАПИшные - BITMAP и ещё одна или две (палитра и вроде расширенный заголовок).
Обратиться к canvas - нет. Проще рисовать на экранный битмап (или на временный битмап в памяти, совпадающий с размером экрана), а потом копировать построчно содержимое в файл большого битмапа. Смещения в файле для записи построчной информации вычисляются без проблем ;)
Или как возможный вариант - сделать наследника от TBitmap, в котором файл будет открываться путём проецирования в память.
Т.е. если разобраться с ВинАПИ на минимальном уровне - то проблем нет никаких. Правда, переносимость кода страдает ;)
PM MAIL WWW   Вверх
gonzales
Дата 27.10.2011, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 13.3.2006

Репутация: 1
Всего: 2



спсибо за ответы, очевидного решения пока не вижу. 
Цитата

Обратиться к canvas - нет. Проще рисовать на экранный битмап (или на временный битмап в памяти, совпадающий с размером экрана), а потом копировать построчно содержимое в файл большого битмапа.

вариант "послайсить" изображение не рассматривается, ибо отрисовка идет по всему битмапу, резать его на куски а потом собирать обратно очень не хочется.

может еще кто-нибудь что-то предложит

ЗЫ.
Цитата

Я не понял, а зачем такой большой bitmap? Он же никогда не влезет в экран...

такие большие битмапы используются в полиграфии, когда разрешение картинки должно составлять не 96 точек, как на экране, а 300, то есть плотность информации возрастает в 3 раза.
 
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
RomanEEP
Дата 27.10.2011, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: 1
Всего: 8



метод разбить изображение - самый быстрый, а по скольку GDI+ работает только с памятью других вариантов вроде нет. Только почему вы боитесь этого метода? Там достаточно написать простенький враппер для ф-ций рисования, который определяет на какие элементы изображения попадает фигура, подгружает их с диска и отрисовывает на них её. Если еще и кэш простенький пристроить то и производительность у такого метода будет обалденная.

Добавлено через 3 минуты
и вопрос, куда этот большой битмап будет скармливаться? если на принтер, то и туда удобнее передавать изображение кусками, поскольку такой огромный битмап редкая программа прочитает
PM MAIL   Вверх
Alexeis
Дата 28.10.2011, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



gonzales, новая ХЕ2 версия вышла с поддержкой 64х бит. Если нужно работать с картинкой целиком, то вероятно на платформе 64 с памятью проблем быть не должно. И второй вариант, использовать файл отображаемый в память, но опять же в случае платформы 32 может тупо не хватить непрерывных адресов. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0843 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.