Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VB 6.0: Быстрый вывод на экран

Ответить
Настройки темы
VB 6.0: Быстрый вывод на экран
bde bde вне форума

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Нужно заполнить по точкам экран 1024х768 не более чем за 100 милисекунд, не используя DirectDraw.

Я уже пробовал функцию API PutPixel(), но для моих целей она очень медленная.

Видел такой способ: с помощью GetObjectA извлекается BitMap(из памяти) в переменную-структуру, затем в массив копируется какие-то данные с помощью RtlMoveMemory. Теперь этот массив - массив цветов. Вот код:

Private Declare Function VarPtrArray Lib "msvbvm50.dll" Alias "VarPtr" (Ptr() As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private Declare Function GetObjectAPI Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long

Sub PictArrayInit2D(xPicture As Image, filepath As String, sa As SAFEARRAY2D, bmp As BITMAP, data() As Byte)
*'
*' Load picture into image box
*'
*If filepath <> "" Then
* *'
* *xPicture.Picture = LoadPicture(filepath)
* *'
*End If
*'
*' Get bitmap info from image box
*'
*GetObjectAPI xPicture.Picture, Len(bmp), bmp 'dest
*'
*' Exit if not a supported bitmap
*'
*If bmp.bmPlanes <> 1 Or bmp.bmBitsPixel <> 8 Then
* *MsgBox " 8-Bit Bitmaps Only!", vbCritical
* *Exit Sub
*End If
*'
*' Have the local matrix point to bitmap pixels
*'
*With sa
* *.cbElements = 1
* *.cDims = 2
* *.Bounds(0).lLbound = 0
* *.Bounds(0).cElements = bmp.bmHeight
* *.Bounds(1).lLbound = 0
* *.Bounds(1).cElements = bmp.bmWidthBytes
* *.pvData = bmp.bmBits
*End With
*'
*' Copy bitmap data into byte array
*'
*CopyMemory ByVal VarPtrArray(data), VarPtr(sa), 4
*'
End Sub

Вопрос, как это переориентировать на 16 и 32х битные битмэпы, *вот эта процедура только для 8-и битных. А для остальных действительно не работает(если выкинуть "Exit Sub"

-------
Born to Devastate Evil


Отправлено: 20:25, 12-11-2003

 
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Если задача ручками попиксельно заполнить картинку - без кэширования тебе не жить. PutPixel работает очень медленно. PutPixelV гораздо быстрее. Ещё быстрее создать битмап нужных параметров, заполнить его биты как массив и отправить на экран SetDIBitsToDevice. Если ты расчитываешь использовать картинку несколько раз, быстрее создать CompatibleDC, отправить биты в него, а затем использовать BitBlt. Картинка, которая будет лежать в CompatibleDC гарантированно совпадёт по параметрам (цвета, кодировка) с экраном, поэтому Винда при возможности попытается использовать аппаратное ускорение. Не забывай полностью заполнить структуры, иначе винда забрыкается.

Отправлено: 15:51, 04-12-2003 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VB 6.0: Быстрый вывод на экран

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] вывод текста на экран antoniospb Скриптовые языки администрирования Windows 6 23-04-2010 13:40
CMD/BAT - [решено] вывод текстового файла на экран cmd idsp Скриптовые языки администрирования Windows 6 06-04-2009 07:18
[решено] Быстрый ли "быстрый запуск"? truvo Хочу все знать 7 30-04-2008 04:49
Assm - assembler вывод содержимого регистра на экран Guest Программирование и базы данных 1 16-07-2004 16:32
JavaScript вывод на экран KHEXT Вебмастеру 1 26-01-2004 23:31




 
Переход