| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Max Размеры TImage.Bitmap.Width && |
| Автор: Sharl 11.1.2005, 20:41 |
| Начинаю увеличивать размер TImage.Bitmap -а. С какого-то (большого ~30000) значения размеров происходит срыв ( выдается Exeption с сообщением о нехватке места хранения) - что вполне логично. Кто-нибудь в курсе, как можно опросить систему о значении ограничения размеров TImage.Bitmap-а ? ... И вообще, есть ли такие константы? |
| Автор: Snowy 12.1.2005, 10:56 | ||
Это значит, что мы можем загрузить до 4-х гигабайт. Как раз хватит на картинку 32768х32768 пихелей (32 бита), или 46341х46341 (16 бит), или 65536х65536 (8 бит), или ...... Отсюда вопрос: Что имелось ввиду под "размером изображения"? И когда происходит ошибка? При назначении размеров битмапа или при изменении размеров изображения в нем? |
| Автор: Sharl 12.1.2005, 12:46 |
| "размером изображения" - это Image.Bitmap.Width и Image.Bitmap.Heigth (или Image.Width и Image.Heigth) а ошыбка выдается , когда увеличиваю Image.Bitmap.Width и Image.Bitmap.Heigth (или Image.Width и Image.Heigth ) |
| Автор: Snowy 12.1.2005, 13:50 |
| То есть Height=Weight или необязательно? Просто ты написал, что размер ~30000. Вот и непонятно к чему эти ~30000 относятся. Ну, как я писал выше, если картинка у тебя 32 бита, то выше разрешения 32768х32768 пихелей не прыгнешь. Ограничение винды. Любой. И зависит не от системы, а от разрешения и глубины цвета. Вобщем максимум, который ты можешь запихать в TBitmap (и прочие родственные вещи): (Height * Width) * bits div 8 <= 4294967296 //(4Gb) где bits - глубина цвета картинки. |
| Автор: Sharl 12.1.2005, 14:29 |
| А что означает глубина цвета картинки ??? Это BITMAPINFOHEADER.biBitCount ? |
| Автор: Snowy 12.1.2005, 15:20 |
| Ну получить доступ к этой структуре будет затруднительно. Delphi ее использует, т.к. это структура виндов, но доступа к ней не дает. Использует только для отрисовки. А сам TBitmap может дать информацию, но в несколько неудобном виде. Почитай про Tbitmap.TPixelFormat Очень неудобно, но другого спозоба я не знаю. Могет он где-то и есть, но я не в курсе. Кроме того есть у меня такое подозрение, что на экран оно будет рисоваться не с битностью рисунка, а в зависимости от разрешения рабочего стола. Но это только предположение. Просто прими битность за 32 по уолчанию и не заморачивайся. Упрощаем: (Height * Width) * 4 <= 4294967296 //(4Gb) |
| Автор: Sharl 12.1.2005, 16:16 |
| Ok. Snowy, Спасибо. |