Страница: 1 |
Страница: 1 |
Вопрос: Stdpicture
Добавлено: 12.01.06 22:33
Автор вопроса: Gogic
Подскажите, плиз, как загрузить рисунок/иконку из файла в тип StdPicture?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #1
Добавлено: 12.01.06 23:34
а что такое Std? Ты говоришь про стандартную Picture, или нет?
Номер ответа: 2
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #2
Добавлено: 12.01.06 23:39
Вот лови примерчик:
Function CreateDDSFromFile(ByVal FileName as String,
Optional CKey as Long=0) as DirectDrawSurface7
'Объявления
'============
Dim dds as DirectDrawSurface7 'Временная вспомогательная поверхность
Dim ddsd as DDSURFACEDESC2 'Описание временной поверхности
Dim StorePic as stdPicture 'Временное хранилище картинки
Dim Bmp as Win32.Bitmap 'Тип BITMAP, описывающий растровое изображение
Dim hDCPicture as Long, hDCSurface as Long 'DC картинки и поверхности
Dim ddCK as DDCOLORKEY 'Для установки ключевого цвета
'Загружаем картинку и получаем объект картинки
'==========================================
StorePic=LoadPicture(FileName) 'Загружаем картинку из файла
'Получаем описание картинки в структуру BITMAP
Call Win32.GetObject(StorePic.Handle, Len(Bmp), Bmp)
'Получаем DC картинки
hDCPicture=Win32.CreateCompatibleDC(ByVal 0&
Call Win32.SelectObject(hDCPicture, StorePic.Handle)
'Теперь, создаем поверхность
'==========================
ddsd.lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT 'Необходимые флаги
ddsd.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN 'Поверхность оффскринная
ddsd.lHeight = bmp.bmHeight 'Высота поверхности как у картинки
ddsd.lWidth = bmp.bmWidth 'Ширина поверхности как у картинки
'Вызываем метод, создающий поверхность
Set dds=dd.CreateSurface(ddsd) 'dd - глобальный объект DirectDraw7
'Переводим картинку на поверхность
'================================
Call dds.Restore
'Подготовка к прямому доступу к поверхности
hDCSurface = dds.GetDC
'Это копирует картинку в буфер
Call Win32.StretchBlt(hDCSurface, 0, 0, bmp.bmWidth, bmp.bmHeight, hDCPicture,
0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY)
'Конец прямого доступа к поверхности
Call dds.ReleaseDC(hDCSurface)
'Уничтожить объект картинки - больше не нужен
Call Win32.DeleteDC(hDCPicture)
'Устанавливаем ключевой цвет
'===========================
ddCK.low=CKey 'Работает правильно только в 24-битном цвете
ddCK.high=ddCK.low 'Но для простых случаев пойдет
Call ddы.SetColorKey(DDCKEY_SRCBLT, ddCK)
'Возвращаем объект
'==================
Set CreateDDSFromFile=dds
End Function
Номер ответа: 3
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #3
Добавлено: 12.01.06 23:46
Ни х...черта ты завернул..... Проще надо быть, а еще Root! ))
Номер ответа: 4
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #4
Добавлено: 12.01.06 23:59
Я не чего ни куда и ни кого, вроде бы, не завернул.
Это не моё, нашел в сети, помойму статья была Павла, не помню точно
Номер ответа: 5
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #5
Добавлено: 13.01.06 00:05
Да я шучу! Смотрится просто громоздко по-моему....
Номер ответа: 6
Автор ответа:
mynog
Вопросов: 3
Ответов: 42
Профиль | | #6
Добавлено: 13.01.06 00:33
Да уж, завернул, так завернул.
А человеку-то достаточно было, наверное:
Dim a As StdPicture
Set a = LoadPicture("C:\pic.bmp"
Номер ответа: 7
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #7
Добавлено: 13.01.06 01:29
Ну так на всякий...
За все про все и обо всем!
Номер ответа: 8
Автор ответа:
Gogic
Вопросов: 38
Ответов: 121
Профиль | | #8
Добавлено: 13.01.06 09:16
За DirectDraw конечно спасибо, но последний код мне больше поможет.
Моя ошибка была в том, что я забыл ключевое слово Set.
Dim a As StdPicture
a=LoadPicture("c:\1.bmp"
Так не работает.
Просто я юзаю контрол SmartMenuXP и там используется этот тип (раньше не сталкивался).
Номер ответа: 9
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #9
Добавлено: 13.01.06 09:50
Пожалуйста, главное поможет
Номер ответа: 10
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #10
Добавлено: 16.01.06 10:46
Кошмар...