image из dibsection

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alexmckey
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 25.04.2005 (Пн) 17:35

image из dibsection

Сообщение alexmckey » 23.08.2006 (Ср) 22:19

подскажите пжлста , как имея 32bpp dibsection создать image и отобразить его с помощью gdipdrawimage
mckey

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.08.2006 (Чт) 6:06

GdipCreateBitmapFromGdiDib
Изображение

alexmckey
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 25.04.2005 (Пн) 17:35

Сообщение alexmckey » 24.08.2006 (Чт) 7:41

спасибо за ответ. я так и пытаюсь ,но MyImage=0




Sub CreateMyImage(wdh As Long, hgt As Long)

Dim graph As Long, _
bytes() As Byte, _
BI As BITMAPINFO, MyImage As Long, memdc As Long, membm As Long, oldBitmap As Long

With BI.bmiHeader
.biSize = Len(BI.bmiHeader)
.biBitCount = 32
.biHeight = -hgt
.biWidth = wdh
.biPlanes = 1
.biSizeImage = Abs(.biWidth * .biHeight * 4)
End With
memdc = CreateCompatibleDC(0)
membm = CreateDIBSection(memdc, BI, DIB_RGB_COLORS, ByVal 0, 0, 0)
oldBitmap = SelectObject(memdc, membm)

GdipCreateFromHDC memdc, graph

'рисовние

ReDim bytes(BI.bmiHeader.biSizeImage - 1) As Byte


GetDIBits memdc, membm, 0, -BI.bmiHeader.biHeight, bytes(0), BI, DIB_RGB_COLORS

'манипуляции с битами

SetDIBits memdc, membm, 0, hgt, bytes(0), BI, DIB_RGB_COLORS


GdipCreateBitmapFromGdiDib BI, bytes(0), MyImage

End Sub
mckey

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 24.08.2006 (Чт) 8:53

а интересно каким магическим образом в приведенном коде MyImage может иметь значение отличное от нуля?
Весь мир матрица, а мы в нем потоки байтов!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.08.2006 (Чт) 8:59

Viper, промахнулся: последний параметр в GdipCreateBitmapFromGdiDib передаётся ByRef.

alexmckey, на кой чёрт тебе вообще в этой процедуре CreateCompatibleDC? и даже CreateDIBSection?

Кроме того, все функции GDI+ возвращают код ошибки. Не пробовал его смотреть?
Изображение

alexmckey
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 25.04.2005 (Пн) 17:35

Сообщение alexmckey » 24.08.2006 (Чт) 9:55

tyomitch
CreateCompatibleDC чтобы gdipfromhdc
mckey

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 24.08.2006 (Чт) 10:20

Эх... промазал.... А вообще стоит в данном случае посмотреть на то , что возвращают все вызываемые функции. Сдается мне где-то там происходит ошибка...
Весь мир матрица, а мы в нем потоки байтов!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.08.2006 (Чт) 10:27

alexmckey писал(а):CreateCompatibleDC чтобы gdipfromhdc

Зачем вообще здесь GDI-без-плюса? Всё равно всё рисование через GDI+, как я понял.
Изображение

alexmckey
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 25.04.2005 (Пн) 17:35

Сообщение alexmckey » 24.08.2006 (Чт) 16:58

tyomitch
рисование через GDI+, но из чего мне создать graphics,направь меня
mckey

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.08.2006 (Чт) 17:22

Из Image: GdipGetImageGraphicsContext
Изображение

alexmckey
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 25.04.2005 (Пн) 17:35

Сообщение alexmckey » 25.08.2006 (Пт) 7:02

tyomitch
tyomitch спасибо еще раз и подскажи пожалуйста ,
c помощью какой функции мне создать Image ,
чтобы передать его в GdipGetImageGraphicsContext
mckey

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.08.2006 (Пт) 9:01

Да ты издеваешься, что ли? GdipCreateBitmapFromScan0

А ещё лучше, если не шаришь в GDI+, возьми мою обёртку: там всё уже есть :-)
Изображение

alexmckey
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 25.04.2005 (Пн) 17:35

Сообщение alexmckey » 25.08.2006 (Пт) 10:11

tyomitch
мне уже страшно тебя спрашивать и всё же
как мне теперь получить байты из созданного Image и,
изменив их вернуть обратно в Image
mckey

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.08.2006 (Пт) 11:31

GdipBitmapLockBits, GdipBitmapUnlockBits

Так и будешь про каждую строчку спрашивать? или уже возьмёшь обёртку? :-)
Изображение

alexmckey
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 25.04.2005 (Пн) 17:35

Сообщение alexmckey » 27.08.2006 (Вс) 6:17

tyomitch
tyomitch,огромное тебе спасибо,у меня всё получилось
mckey


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 131

    TopList