[ES/EE/EEB] Utilizando .PNG com DirectX7
+4
Ian
V-Force
Thales12
St4rk
8 participantes
MMORPG Brasil :: OPEN SOURCE ENGINES :: Eclipse :: Tutoriais
Página 1 de 1
[ES/EE/EEB] Utilizando .PNG com DirectX7
Antes de iniciar, não me importo se vão achar ruim depois, já guardei isso por um tempo, está na hora de todos ficarem sabendo, não me importo se vão roubar e por créditos de outro, não to nem ai para "meus créditos", fique avontade para usar como você quiser...
Nível: 2/5 - Programação
Nesse tutorial pretendo aborda um pouco sobre como carregar .png no DirectX7, essa maneira já era possível, pois, existe metodos(usando algumas gambiarras) de carregar gráficos indiretamente em uma surface do DirectX7, o nosso futuro Modulo PNG vem de uma famosa engine chamada "FrogCreator"(acho que é isso), nessa engine é possível carregar .png, enfim, o mistério acabo.
1º Abra seu Cliente(src/código de fonte) e crie um novo Modulo, o nomeie de modPNG(para ficar organizado) e copie e cole o seguinte código:
Fazendo isso, lá em cima no Visual Basic 6, na aba "Project", clique em referências(References) e Selecione as seguintes Library:
Fazendo isso, vou demostrar um exemplo de como usar o modPNG.
Exemplo retirado do Eclipse Stable, porém, pode ser usado em outras engines(claro que com modificações).
Para usar o modPNG se modifica a parte dos lFlags, lCaps e "DD.CreateSurfaceFromFile", ficando assim:
A parte mais importante é a do "LoadImage", lembre-se que DD é o Objeto do DirectX7, fazendo isso você vai carregar os gráficos em .png
Considerações finais: O modPNG é muito util para os projetos, infelizmente não da para carregar sua transparência ainda(alpha chanel, eu acho que é isso), porém, vou ver se consigo.
Enfim, boa sorte se for usar ele.
Nível: 2/5 - Programação
Nesse tutorial pretendo aborda um pouco sobre como carregar .png no DirectX7, essa maneira já era possível, pois, existe metodos(usando algumas gambiarras) de carregar gráficos indiretamente em uma surface do DirectX7, o nosso futuro Modulo PNG vem de uma famosa engine chamada "FrogCreator"(acho que é isso), nessa engine é possível carregar .png, enfim, o mistério acabo.
1º Abra seu Cliente(src/código de fonte) e crie um novo Modulo, o nomeie de modPNG(para ficar organizado) e copie e cole o seguinte código:
- Código:
'************************************************
'* SurfUtil.bas *
'* *
'* By: W-Buffer *
'* Web: istudios.virtualave.net/vb/ *
'* Mail: wbuffer@hotmail.com *
'* *
'* Modified by: Don Andy (don_andy@gmx.de) *
'* *
'* Notes: Do whatever you want with this bas *
'* (Steal, Copy, Etc.) *
'* These functions were modified to work *
'* with PNG only and to recieve the DDSD *
'* The DDSD MUST have a DDSD_HEIGHT and *
'* DDSD_WIDTH flag!! *
'* The lib used to display PNGs is the *
'* PaintX-Lib (http://www.paintlib.de) *
'************************************************
Option Explicit
Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long
Public Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject 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 hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Public Function LoadPNG(FileName As String, Optional Errore As Boolean) As StdPicture
On Error GoTo er:
Dim PictureDecoder As New PAINTXLib.PictureDecoder
Set LoadPNG = PictureDecoder.LoadPicture(FileName)
Exit Function
er:
If Errore Then MsgBox "Erreur de chargement de " & FileName & vbCrLf & "Verifiez qu'il soit présent."
End Function
Public Function LoadImage(FileName As String, DDraw As DirectDraw7, SDesc As DDSURFACEDESC2) As DirectDrawSurface7
Dim TPict As StdPicture
Set TPict = LoadPNG(FileName, True)
SDesc.lHeight = CLng((TPict.Height * 0.001) * 567 / Screen.TwipsPerPixelY)
SDesc.lWidth = CLng((TPict.Sou lammer =D * 0.001) * 567 / Screen.TwipsPerPixelX)
Set LoadImage = DDraw.CreateSurface(SDesc)
Dim SDC As Long, TDC As Long
SDC = LoadImage.GetDC
TDC = CreateCompatibleDC(0)
SelectObject TDC, TPict.handle
BitBlt SDC, 0, 0, SDesc.lWidth, SDesc.lHeight, TDC, 0, 0, vbSrcCopy
LoadImage.ReleaseDC SDC
DeleteDC TDC
Set TPict = Nothing
End Function
Public Function LoadImageStretch(FileName As String, Height As Long, Sou lammer =D As Long, DDraw As DirectDraw7, SDesc As DDSURFACEDESC2) As DirectDrawSurface7
Dim TPict As New StdPicture
Set TPict = LoadPNG(FileName, True)
SDesc.lHeight = Height
SDesc.lWidth = Sou lammer =D
Set LoadImageStretch = DDraw.CreateSurface(SDesc)
Dim SDC As Long, TDC As Long
SDC = LoadImageStretch.GetDC
TDC = CreateCompatibleDC(0)
SelectObject TDC, TPict.handle
StretchBlt SDC, 0, 0, Sou lammer =D, Height, TDC, 0, 0, CLng((TPict.Sou lammer =D * 0.001) * 567 / Screen.TwipsPerPixelX), CLng((TPict.Height * 0.001) * 567 / Screen.TwipsPerPixelY), vbSrcCopy
LoadImageStretch.ReleaseDC SDC
DeleteDC TDC
Set TPict = Nothing
End Function
Fazendo isso, lá em cima no Visual Basic 6, na aba "Project", clique em referências(References) e Selecione as seguintes Library:
PaintX 1.0 Type Library
OLE Automation
Fazendo isso, vou demostrar um exemplo de como usar o modPNG.
Exemplo retirado do Eclipse Stable, porém, pode ser usado em outras engines(claro que com modificações).
- Código:
' Init sprite ddsd type and load the bitmap
DDSD_Sprite.lFlags = DDSD_CAPS
DDSD_Sprite.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN Or DDSCAPS_SYSTEMMEMORY
Set DD_SpriteSurf = DD.CreateSurfaceFromFile(App.Path & "\GFX\Sprites.bmp", DDSD_Sprite)
Para usar o modPNG se modifica a parte dos lFlags, lCaps e "DD.CreateSurfaceFromFile", ficando assim:
- Código:
' Init sprite ddsd type and load the bitmap
DDSD_Sprite.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
DDSD_Sprite.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN Or DDSCAPS_SYSTEMMEMORY
Set DD_SpriteSurf = LoadImage(App.Path & "\GFX\Sprites.png", DD, DDSD_Sprite)
SetMaskColorFromPixel DD_SpriteSurf, 0, 0
A parte mais importante é a do "LoadImage", lembre-se que DD é o Objeto do DirectX7, fazendo isso você vai carregar os gráficos em .png
Considerações finais: O modPNG é muito util para os projetos, infelizmente não da para carregar sua transparência ainda(alpha chanel, eu acho que é isso), porém, vou ver se consigo.
Enfim, boa sorte se for usar ele.
Re: [ES/EE/EEB] Utilizando .PNG com DirectX7
Tio Omega eu ja sabia fazer rodar imagem .png ..
mais mts nao sabem, obrigado por postar, + 2 creditos apra vc ! :0
mais mts nao sabem, obrigado por postar, + 2 creditos apra vc ! :0
Re: [ES/EE/EEB] Utilizando .PNG com DirectX7
Nice, omega postando tutorial uia haushuas... Belo tuto +3 de cred
V-Force- Administrador V-Force
- Mensagens : 933
Re: [ES/EE/EEB] Utilizando .PNG com DirectX7
não sei oque mais improvavel v-force direto no forum kk ou omega fasendo post de tutorial rsrs boa omega
Ian- Membro Veterano
- Mensagens : 1238
Re: [ES/EE/EEB] Utilizando .PNG com DirectX7
kkkk euri /\
enfim eu já sabia disso fikdik...
valew Zero,.
enfim eu já sabia disso fikdik...
valew Zero,.
Darkpeople196- Membro Vitalicio
- Mensagens : 612
Re: [ES/EE/EEB] Utilizando .PNG com DirectX7
VEJO QUE SÓ TEM PESOS PESADOS NO VB6!!!!!!!!!!
AGRADEÇO DESDE JÁ A SUA INICIATIVA EM POSTAR ALGO TÃO PRECIOSO PARA MUITOS QUE COMO EU, PRECISAM PARA MELHORAR SUAS ENGINES
ASS: TRIPLO-XXXX
AGRADEÇO DESDE JÁ A SUA INICIATIVA EM POSTAR ALGO TÃO PRECIOSO PARA MUITOS QUE COMO EU, PRECISAM PARA MELHORAR SUAS ENGINES
ASS: TRIPLO-XXXX
Yohanson- Membro
- Mensagens : 153
Re: [ES/EE/EEB] Utilizando .PNG com DirectX7
- Código:
'************************************************
'* SurfUtil.bas *
'* *
'* By: W-Buffer *
'* Web: istudios.virtualave.net/vb/ *
'* Mail: wbuffer@hotmail.com *
'* *
'* Modified by: Don Andy (don_andy@gmx.de) *
'* *
'* Notes: Do whatever you want with this bas *
'* (Steal, Copy, Etc.) *
'* These functions were modified to work *
'* with PNG only and to recieve the DDSD *
'* The DDSD MUST have a DDSD_HEIGHT and *
'* DDSD_WIDTH flag!! *
'* The lib used to display PNGs is the *
'* PaintX-Lib (http://www.paintlib.de) *
'************************************************
Option Explicit
Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long
Public Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject 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 hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Public Function LoadPNG(filename As String, Optional Errore As Boolean) As StdPicture
On Error GoTo er:
Dim PictureDecoder As New PAINTXLib.PictureDecoder
Set LoadPNG = PictureDecoder.LoadPicture(filename)
Exit Function
er:
If Errore Then MsgBox "Error al cargar " & filename & vbCrLf & "Compruébelo usted mismo ahora."
End Function
Public Function LoadImage(filename As String, DDraw As DirectDraw7, SDesc As DDSURFACEDESC2) As DirectDrawSurface7
Dim TPict As StdPicture
Set TPict = LoadPNG(filename, True)
SDesc.lHeight = CLng((TPict.Height * 0.001) * 567 / Screen.TwipsPerPixelY)
SDesc.lWidth = CLng((TPict.Width * 0.001) * 567 / Screen.TwipsPerPixelX)
Set LoadImage = DDraw.CreateSurface(SDesc)
Dim SDC As Long, TDC As Long
SDC = LoadImage.GetDC
TDC = CreateCompatibleDC(0)
SelectObject TDC, TPict.Handle
BitBlt SDC, 0, 0, SDesc.lWidth, SDesc.lHeight, TDC, 0, 0, vbSrcCopy
LoadImage.ReleaseDC SDC
DeleteDC TDC
Set TPict = Nothing
End Function
Public Function LoadImageStretch(filename As String, Height As Long, Width As Long, DDraw As DirectDraw7, SDesc As DDSURFACEDESC2) As DirectDrawSurface7
Dim TPict As New StdPicture
Set TPict = LoadPNG(filename, True)
SDesc.lHeight = Height
SDesc.lWidth = Width
Set LoadImageStretch = DDraw.CreateSurface(SDesc)
Dim SDC As Long, TDC As Long
SDC = LoadImageStretch.GetDC
TDC = CreateCompatibleDC(0)
SelectObject TDC, TPict.Handle
StretchBlt SDC, 0, 0, Width, Height, TDC, 0, 0, CLng((TPict.Width * 0.001) * 567 / Screen.TwipsPerPixelX), CLng((TPict.Height * 0.001) * 567 / Screen.TwipsPerPixelY), vbSrcCopy
LoadImageStretch.ReleaseDC SDC
DeleteDC TDC
Set TPict = Nothing
End Function
Coloquem isso no modPNG nao usem o que ai cima cito elhe nao da.
ismael251- Membro Junior
- Mensagens : 58
Re: [ES/EE/EEB] Utilizando .PNG com DirectX7
Eu estou usando o Eclipse Evolution e nao fica dando alguem pode fazer um tutorial para isso? ou melhor mude o codigo que ai cima e coloque no Eclipse Evolution e dps eu veio e faço toudo aqui!
Quem fazer isso para min dou 3 Creditos!
Quem fazer isso para min dou 3 Creditos!
ismael251- Membro Junior
- Mensagens : 58
Tópicos semelhantes
» Error Initializing DirectX7 - DirectDraw
» Utilizando PNG
» Utilizando o Event System
» [ALL]Auto Ataque utilizando Checkbox
» [ALL]Auto Magia utilizando Checkbox
» Utilizando PNG
» Utilizando o Event System
» [ALL]Auto Ataque utilizando Checkbox
» [ALL]Auto Magia utilizando Checkbox
MMORPG Brasil :: OPEN SOURCE ENGINES :: Eclipse :: Tutoriais
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Dom 08 Abr 2018, 18:40 por JorgeZinhoo002
» Ojkjeeeee
Seg 10 Out 2016, 23:19 por Frozen
» Naruto Great Ninja Batle
Dom 09 Out 2016, 14:29 por GuiinhoLP
» Recrutamento de um Designer para jogo de CDZ.
Sex 23 Set 2016, 18:37 por newbie123
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:09 por Eduardo
» Projeto Dbz
Qua 31 Ago 2016, 23:46 por 157
» Avaliação - Sprites Naruto
Qua 31 Ago 2016, 17:09 por 157
» [Sprites] DBZ (Plix)
Qua 31 Ago 2016, 14:13 por 157
» Super Pack - Bleach V.2
Qua 31 Ago 2016, 13:02 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:04 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:03 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:02 por 157
» [Pedido] Contador de resets na FrmMain
Sáb 13 Ago 2016, 17:45 por killers97
» [Recrutamento]
Qua 10 Ago 2016, 23:09 por Monsters
» Ajuda erro no Cliente e Servidor do EEB 2.6!
Qua 20 Jul 2016, 19:53 por Binholx
» Como criar tilesets para Eclipse Origins 3.0 (POKÉMON)
Qua 29 Jun 2016, 19:46 por Sir Aaron
» Recursos Pokemons
Qua 29 Jun 2016, 19:34 por Sir Aaron
» erro frm flash
Qua 25 maio 2016, 13:51 por vava123
» Pedido - Pack de star wars
Qui 19 maio 2016, 05:06 por edsonpet
» [Ajuda] Sobre como por o servidor on por ip fixo
Ter 17 maio 2016, 16:14 por vava123
» Illusion Dimension - O Misterio do ID: BETA TESTE ONLINE
Sex 06 maio 2016, 20:02 por LksFlorencio
» [NSME] Naruto Shinobi Maker Engine
Qua 23 Mar 2016, 15:11 por luana1457
» Script /base,/casa Igual DBZ Forces
Dom 21 Fev 2016, 07:34 por JorgeZinhoo002
» [Pedido]Colar Tsunade item sprite eclipse origin
Qui 21 Jan 2016, 07:38 por lawllietbr
» [Pedido] Elysium
Sáb 19 Dez 2015, 11:31 por luana1457
» Naruto - Recruta
Ter 15 Dez 2015, 18:40 por Uchiha ~
» [Avaliação] - Kirito from Sword Art Online; Red and Pikachu from Pokemon.
Qua 25 Nov 2015, 13:43 por Thanakii
» [Avaliação] - Kenpachi Zaraki from Bleach; Libra Shiryu From Saint Seiya.
Qua 25 Nov 2015, 12:55 por Thanakii
» Demonstração de Sprites (Á VENDA!)
Qua 25 Nov 2015, 12:40 por Thanakii
» [Sistema de Reset]Para Eclipse .
Ter 24 Nov 2015, 16:51 por VithorUchi
» Cada Guild Nascer em Certo Mapa
Qui 12 Nov 2015, 06:13 por fabiofeijó_HIT
» Dragon Ball z Fusion A Grande Volta
Qui 29 Out 2015, 15:17 por fabiofeijó_HIT
» Ajuda com Ip fixo
Seg 26 Out 2015, 16:07 por GalaxyHells15
» Como Fazer um GUI no Eclipse Origins
Dom 18 Out 2015, 22:10 por Jeanleee
» Shisui Susanoo
Dom 18 Out 2015, 20:23 por Jeanleee
» Fantasy Art Online
Dom 18 Out 2015, 16:41 por daviih123
» Ajuda !!
Seg 05 Out 2015, 12:13 por andersonzika
» como passar o usuário e senha para o MainMenu?
Seg 28 Set 2015, 22:03 por Bëzerk
» Ru time ero 13 Type mismatch
Seg 28 Set 2015, 09:08 por andredarle
» Jarvis 1.3 Download
Qua 23 Set 2015, 18:42 por soares125
» [Avaliação/Disponibilização]Árvore 64x64
Qua 23 Set 2015, 15:15 por Over~
» Mlk's Zikas Signatures
Ter 22 Set 2015, 21:15 por Aikawa Reborn'
» Pedido de Sistemas
Dom 20 Set 2015, 18:05 por cleyton_05
» [AjudaEEB]Gerador de EXP
Qua 16 Set 2015, 14:04 por Over~
» [Avaliar] Base, Humano e Goblin.
Seg 14 Set 2015, 22:51 por .iBlaz3.
» Fabrica do Tio Cronos!
Dom 13 Set 2015, 21:31 por [ADM]Cronos
» [PixelArt] Minion - Meu malvado favorito
Dom 13 Set 2015, 12:51 por [ADM]Cronos
» [Avaliar] Goku Dragon Ball Z
Qua 05 Ago 2015, 21:36 por Setrux