Помогите с DirectDraw

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Russish
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.01.2004 (Вс) 8:08

Помогите с DirectDraw

Сообщение Russish » 25.04.2004 (Вс) 6:38

Скажите пожалуйста, при блиттинге неужели можно использовать только структуру RECT или есть альтернатива, и возможно ли помимо BMP формата использовать, скажем, JPG ?

mrs2000
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 78
Зарегистрирован: 05.01.2004 (Пн) 16:53
Откуда: Иркутск

Сообщение mrs2000 » 29.04.2004 (Чт) 9:30

Чем тебе RECT не нравиться. Помойму очень удобно.

Можно jpg, gif, pcx, wmf и т.д.

Код: Выделить всё
Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
Public Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hScreenRectcDC As Long, ByVal xScreenRectc As Long, ByVal yScreenRectc As Long, ByVal nScreenRectcWidth As Long, ByVal nScreenRectcHeight As Long, ByVal dwRop As Long) As Long
Public Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

Type BITMAP
    bmType As Long
    bmWidth As Long
    bmHeight As Long
    bmWidthBytes As Long
    bmPlanes As Integer
    bmBitsPixel As Integer
    bmBits As Long
End Type

Public Sub LoadBitmapFile(DDS As DirectDrawSurface7, ByVal FileName As String)
    Dim StorePic As StdPicture
    Dim Bmp As BITMAP
    Dim hDCPicture As Long, hDCSurface As Long
    Set StorePic = LoadPicture(FileName)
    Call GetObject(StorePic.Handle, Len(Bmp), Bmp)
    hDCPicture = CreateCompatibleDC(ByVal 0&)
    Call 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 = g_DD.CreateSurface(ddsd)
    Call DDS.restore
    hDCSurface = DDS.GetDC
   
    Call StretchBlt(hDCSurface, 0, 0, Bmp.bmWidth, Bmp.bmHeight, hDCPicture, 0, 0, Bmp.bmWidth, Bmp.bmHeight, &HCC0020)
    Call DDS.ReleaseDC(hDCSurface)
    Call DeleteDC(hDCPicture)
    ddck.low = 0
    ddck.high = 0
    Call DDS.SetColorKey(DDCKEY_SRCBLT, ddck)
End Sub

Russish
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.01.2004 (Вс) 8:08

Сообщение Russish » 01.05.2004 (Сб) 5:47

Мне нужно иметь на заднем буфере изображение круга с рисунком внутри, при этом это изображение, при движение, пересекает полосы разных цветов. Если это изображение - BMP то обязательно структурой RECT захватывается цвет фона, на котором изображение рисовалось в редакторе.

mrs2000
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 78
Зарегистрирован: 05.01.2004 (Пн) 16:53
Откуда: Иркутск

Сообщение mrs2000 » 05.05.2004 (Ср) 8:13

Используй прозрачный цвет!

Russish
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.01.2004 (Вс) 8:08

Сообщение Russish » 09.05.2004 (Вс) 5:51

???? Прозрачный цвет ????

mrs2000
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 78
Зарегистрирован: 05.01.2004 (Пн) 16:53
Откуда: Иркутск

Сообщение mrs2000 » 11.05.2004 (Вт) 6:19

Код: Выделить всё
Dim ddck  as DDCOLORKEY
Dim surf as DirectDrawSurface7 ' твоя картинка

ddck.low=цвет фона, на котором изображение рисовалось в редакторе
ddck.high=ddck.low

surf.SetColorKey DDCKEY_SRCBLT, ddck

backbuffer.BltFast x,y,surf, rect,  DDBLTFAST_SRCCOLORKEY

Russish
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.01.2004 (Вс) 8:08

Сообщение Russish » 26.05.2004 (Ср) 7:19

Большое спасибо!

Russish
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.01.2004 (Вс) 8:08

Сообщение Russish » 06.06.2004 (Вс) 7:44

Кстати, может кто-нибудь знает: возможно ли поворачивать картинку на разные углы в DX7 или же необходимо только через DX8 ?

Dagobert
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 141
Зарегистрирован: 21.12.2002 (Сб) 6:48
Откуда: Russia

Сообщение Dagobert » 18.08.2004 (Ср) 9:36

2 mrs2000
Это работает только для цветового режима 24-бит и дальше, а в 16-бит всё немного по другому.
http://dagobert.scararegis.by.ru/ddraw_print.html

2 Russish
Насчёт поворота не знаю точно, но по-моему через BltFX. Посмотри параметры.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Сообщение Gemini » 06.12.2004 (Пн) 18:12

Вопрос по формуле: как можно сделать поворот картинки за мышкой (поросто вращалась?) если учесть что картинка может вращаться на 360 градусов.

Я знаю X и Y Мышки.
И X и Y Изображения.


Вернуться в Мультимедиа

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

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

    TopList