![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| DragonFire |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Мне нужно загрузить текстуру. У меня есть такой код:
Но мне нужно составить процедуру, не использую TBitmap. У меня есть и такой код:
Но в этой процедуре используется тип Pointer,а мне нужен pByteArray... Как мне соместить эти две процедуры???? З.Ы.
|
||||||
|
|||||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Мне кажется что решение черезчур сложное...
можно попробовать работать с bitmapom через api Добавлено @ 15:02 Вот перечень функций для работы Взято из справки BitBlt CreateBitmap CreateBitmapIndirect CreateCompatibleBitmap CreateDIBitmap CreateDIBSection CreateDiscardableBitmap ExtFloodFill FloodFill GetBitmapBits GetBitmapDimensionEx GetDIBColorTable GetDIBits GetPixel GetStretchBltMode LoadBitmap MaskBlt PatBlt PlgBlt SetBitmapBits SetBitmapDimensionEx SetDIBColorTable SetDIBits SetDIBitsToDevice SetPixel SetPixelV SetStretchBltMode StretchBlt StretchDIBits -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Чтобы работать с TBitMaP нужно подключать модуль Graphics, а мне этого делать нельзя...
Вот составил процедурку - текстуры загружает, только нужно чтобы в pByteArray загрудала а не в Pointer... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
причем здесь Graphics это Api функции определенные в модуле Windows
Добавлено @ 15:24 Эти функции не работают с tbitmap а с указателем на область памяти где хранится битмап HBITMAP (или handle картинки) Добавлено @ 15:25 handle пролучают вызавом loadbitmap(...) Добавлено @ 15:32 Вообще bitmap это некоторый зарегистрированный тип в windows делфийский tbitmap это лишь оболочка виндовского. Добавлено @ 15:36 А указтели любые можно и так присваивать без проблем переменные pByteArray и Pointer присваиваются одна другой и наоборот. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Если присваиваются, тогда почему при компиляции на строке With TWrap(result^)[x] do begin у меня выдает ошибку несоответствия типов, это я заменяю Pointer на pByteArray в описании функции...
Тогда если не сложно, мог бы написать простенький код загрузки файла в Api TBitmap - создание его, объяление... |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
alexeis1
Можешь примерный код дать? плиз... |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
||||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
А у меня ошибка на строке:
With (TWrap(result^)[x] do begin вот какая: [Error] PRL.dpr(459): Invalid typecast |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
А если так попробовать? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
||||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
та же ошибка 7 |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
А так? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Все прикрасно компелируется, даже если тип функции поменять на pByteArray но при загрузке выдает RunTime Errore...
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
попробуй в конце процедуры поставить
CloseFile(BmpFile); и в свойствах файла убрать атрибут только для чтения... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Albinos_x
Не помогает Romikgy На строке BlockRead(BmpFile, per, Size); Это перед циклом... |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
если возмёшь маленький файл этой ошибки вылетать не будет, т.е. у этой функции видимо есть ограничение на Size, пока в справке ничего по этому поводу не нашёл... советую ограничить чтение блоком допустип - 8192 и считывать в цикле... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Да...
Хотелось бы побольше, чем 16х16 |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
я имел ввиду считывать по блочно (кусками по 8192) -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
тоесть? кусок текстуры, а потом соеденить? интересно...
вот тока как это сделать? |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
не.. то есть делаешь промежуточный массив, допустим pertemp, такой же как per, только размером 8192 в него считываешь блок, после дописываешь им per, и так в цикле пока per не заполнишь(или не прочитаешь весь файл)... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| DragonFire |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Спасибо, щас попробую...
Добавлено @ 23:43
Вот так... грузит тока вместо текстур все черное... ...Я вот подумал может дело не в типе, а в хранении данных... мне нужно чтобы они хранились как тут хранятся:
может не надо так сложно это переделывать... теперь то это вообще не текстура |
||||
|
|||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Короче, можно заменить делфийский TBitMap на какой-нибудь Api-шный Bitmap??
|
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
это понятно... у тебя массив кроме первых 8190 элементов будет равен 0... тогда уж вот так:
Это сообщение отредактировал(а) Albinos_x - 8.3.2006, 16:24 -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Ууу...
Так вообще ошибку выдает и открывает окно CPU... Может можно просто как то заменить TBitMap Delphi на какой-нибудь TBitMap Api? |
|||
|
||||
| Albinos_x |
|
||||||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
угу... такое же окошечко я видел в твоём коде и до этого но с маленькой картинкой... а так всё дело "в волшебных пузырьках"....:
видимо глюк ловит ф-я BlockRead и вместе с
работать не хочет... хотя должна... Добавлено @ 16:33
вотт так его описывает делфя:
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||||||
|
|||||||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Да... не пашет...
А насчет описания - я смотрел, только там оченб много ссылок на типы разные из SysUtillsa и другого... |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
да, не пашет...
|
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
в чем выражается?
может попробовать не указатель(т.к. массив per заполняется нормально... проверял), а сам массив передавать?
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
При вызове функции пишет несоответствие типа TRGB и Pointer...
|
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
видимо ф-ю поменял, а принимаешь не в массив, а в указатель...(если я правильно понял)
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Только надо не забывать освобождать память TBMP.Data после использования. PS. Хочу заметить, что PByteArray мне кажется неправильным выбором для хранения BMP, так как максимальный размер его - 32768. -------------------- |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Функция не может иметь формат TRGB (TBMP) - при высове функции возникает ошибка несоответствия типов TRGB и Pointer.
P.S. А может вообще не стоит загружать BMP? Написать свой формат? Это сообщение отредактировал(а) DragonFire - 9.3.2006, 08:50 |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
В каком месте кода? -------------------- |
|||
|
||||
| DragonFire |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Вот в этом:
Я переделал прогу под свой формат, так я его кодирую:
А так загружаю (по аналогии с самым первым кодом в этой теме, где еще через TBitMap), только вот вместо текстур - все черное...
В чем ошибка? |
||||||
|
|||||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
DragonFire
Спрашивал как грузить при помощи api примерно так h := LoadImage(0, '..\Images\YourImage.bmp', IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE or LR_LOADFROMFILE); h - HBITMAP -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
-------------------- |
|||
|
||||
| DragonFire |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
А как тогда получить размер изображения? Как этот код переделать под h?
Написал New(Resualt); нифега не помогло |
||||
|
|||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Вообще, у тебя нужные данные содержатся в заголовках.
В приведенном мной коде ты получаешь оба заголовка и саму двоичную карту в PByteArray. Дальше уже дело техники - как их использовать. Это сообщение отредактировал(а) Демо - 9.3.2006, 10:54 -------------------- |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Вот что на это говорит справка
lpDimension - указатель на структуру типа Tpoint где x - width y - height -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Все, совсем запутался... Как из этого описания получить что-либо? Где что объявлять и вызывать?
Все, запутался... Пишу:
и не пашет ничего... Потолковее мона плиз, так чтобы мне нубу было понятно |
||||||
|
|||||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Вот так будет работать
Добавлено @ 11:53 Эту штуку я "украл" у Борланда Добавлено @ 11:54 DS будет хранить вообще всю инфу о битмапе -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Вместо текстуры - зеленый цвет Это сообщение отредактировал(а) DragonFire - 9.3.2006, 11:59 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
не удивительно
GetRValue - прининимает в качестве параметра TRGB а ей передают handle bitmapa Добавлено @ 12:09 нужное действие выполняет
Добавлено @ 12:19 Кажись я ошибся нужная информация уже хранится в DS.dsBm.bmBits -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
В смысле указатель на карту битов который и будет pByteArray
Добавлено @ 12:29 Точнее это указатель на двумерный массив хранящий последовательно все строки картинки. если размер картинки заранее известен то это будет что-то вроде trgb = packed record b,g,r : byte; end; Var b : ^array[1..height, 1..Width*3] of Byte; или b : ^array[1..height, 1..Width] of TRGB; Добавлено @ 12:30 Если нет то смещение на каждую новую строку прийдется искать вручную -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
А как получить карту битов? где присваивать это b ??
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Адресс этой карты хранится в DS.dsBm.bmBits
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
LPVOID lpvBits, // address of array for bitmap bits
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Все эти операции и многие другие, кстати, можно посмотреть
в реализации TBITMAP - в конечном итоге он ведь оперирует средствами Windows - я как раз так и делаю. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Непаномаю...
как связать DS.dsBm.bmBits и это: |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Romikgy, эта функция, как оказалось, делает не совсем то что надо.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Эта -------------------- Ll 2 |
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
b := DS.dsBm.bmBits
Добавлено @ 13:32 Sorry опять ошибочка объявлять придется примерно так
Добавлено @ 13:35 Romikgy, я имел ввиду функцию
или я неправ -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Ну вот я написал:
Тока ошибка на result:=b; Что тут надо писать? Опять я что-то пропустил из объяснений? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
я не знаю как здесь объявлен pByteArray
или он стандартый -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
PByteArray = ^TByteArray;
TByteArray = array[0..32767] of Byte; |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
если стандартный и не требуется разбиение на строки
то вообще просто result := DS.dsBm.bmBits -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Можно так попробывать
result:=pByteArray(b); -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
и нифига не пашет...
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
на что ругается
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Давайте рассуждать логически... Что нам нужно? Нужно, чтобы в pByteArray записывализь RGB в таком порялке: Пиксель1: R,G,B; Пиксель 2: R,G,B; и т.д.Тоесть должна получится цепочка: R,G,B,R,G,B,R,G,B...
Вопрос: как ее получить из DS.dsBm.bmBits? Он не ругается - текстуры нету вообще просто... Это сообщение отредактировал(а) DragonFire - 9.3.2006, 13:56 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
что не нравится объява????!!!!!
странно у меня пашет.... Добавлено @ 14:03 интересно что DS.dsBm.bmBits и есть указатель на эту самую искомую текстуру! а как дальше идет отрисовка(или проверка)??? -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Вот функция:
Но вместо текстуры - все черное... Где-то ошибка, если DS.dsBm.bmBits - и есть искомая структура... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
DragonFire, это код загрузки хотелось бы посмотреть на код отображения (отрисовки) картинки.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Примерно так:
|
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
pTWrap(DWord(Result)+x*SizeOf(TWrap))^[0]; где pTWrap = ^TWrap; -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
DragonFire, есть еще проблема windws может (и делает это) грузить картинку прямо в видекарту (т.е. в аппаратный буфер)
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Порывшись в примерах я нашел чтото похожее на то что нужно
дання процедура использовалась для создания скина из битмапа при помощи апи Привожу фрагмент
Добавлено @ 13:08 Порывшись в справке я еще нашел что функция CreateDIBSection создает тот самый аппаратно независимый растр который нам и нужен -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
И куда это писать? Простите нуба...
Вещь хорошая, но непонятная... Где тут название файла? она же ничего не загружает... И еще как pByteArray или хотябы Pointer присобачить? Через Buf? |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
http://forum.vingrad.ru/index.php?showtopi...st&p=662985 ("У меня есть и такой код:") Вместо: With TWrap(result^)[x] do begin Енто: With pTWrap(DWord(Result)+x*SizeOf(TWrap))^[0] do begin Перед: TWrap = Array [0..0] of TRGB; Енто: pTWrap = ^TWrap; -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
DragonFire, файл предпологается загуженным заранее
Bitmap : hBitmap - handle загруженного битмапа (то что мы получили функцией LoadImage и записывали в переменную h) Добавлено @ 13:16 Далее анологично получили информацию строчка GetObject(Bitmap, SizeOf(bmInfo), @bmInfo); Добавлено @ 13:17 у нас это было ввиде DS.dsbmih.biSize := 0; FillChar(DS, SizeOf(DS), 0); Bytes := GetObject(h, SizeOf(DS), @DS); Добавлено @ 13:22 Потом заполнили специальную структуру для подготовки аппаратно независимого растра - это bmiInfo Затем вызвали CreateDIBSection(DC, bmiInfo , DIB_RGB_COLORS, Pointer(lpBits), 0, 0); и получили злополучный указатель в переменной lpBits Для чего нужно GetDIBits я еще не знаю. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Понял
Только после этого в lpBits будет нужный растр. Вроде ВСЕ -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Girder
Спасибо, прога запустилась! Тока это проблемы не решило... где-то ошибка в загрузке текстур... Она всеравно натягивается неправильно... alexeis1 А теперь, если можно полный код, потому что у меня выдает ошибку, когда я вместо h пытаюсь подставить Bitmap... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
К сожалению я с OpenGl ем не знаком поэтому выводил на экран как
мог. У меня есть заготовленная картинка 200x250 ее я и использовал ("img.bmp")
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Не, не загружает...
Вместо текстур - черное все... Тоесть это значит что текстуры загружены, только всеравно что черный квадрат загрузить... Попробовал вот так, вообще виснит, хотя вроде все должнобыть так, как в примере с канвасом...
|
|||
|
||||
| DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: нет Всего: 9 |
Я ПОНЯЛ
Извините, я жестко ступил. На самом деле текстуры правильно отображаются при обоих моих способах (см. первую страницу), только при Api-шном способе тектура загружается снизу-вверх, а не сверху-вниз. Решение проблемы - отразить текстуру сверху вниз в пайнте Еще раз извините, за мучения! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |