Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: bit.pirit.info
 Профиль | | #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-сайт: bit.pirit.info
 Профиль | | #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-сайт: bit.pirit.info
 Профиль | | #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-сайт: bit.pirit.info
 Профиль | | #9
Добавлено: 13.01.06 09:50
Пожалуйста, главное поможет

Ответить

Номер ответа: 10
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #10 Добавлено: 16.01.06 10:46
Кошмар...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам