djnaoki
Messages postés23Date d'inscriptionsamedi 17 novembre 2012StatutMembreDernière intervention18 juin 2015
-
30 déc. 2013 à 14:03
djnaoki
Messages postés23Date d'inscriptionsamedi 17 novembre 2012StatutMembreDernière intervention18 juin 2015
-
31 déc. 2013 à 14:30
salut, je code ne ce moment un petit jeu seulement la je suis heurter a un problème... je voudrais pourvoir dessiner des GIF a l'infini (j'ai trouver un code qui fait ca) mais le problème c'est que je voudrais en plus de ca pouvoir déplacer chacun d'eux séparément et aussi pouvoir faire sorte que mes gif soit pas tous les mêmes
mon code (un peu brouillon) :
Public Class Form1 Dim count As Integer Dim rec As datarectangle Private currentlyAnimating As Boolean = False Public mort(5) As Bitmap Public Sub AnimateImage()
If Not currentlyAnimating Then
ImageAnimator.Animate(mort(0), New EventHandler(AddressOf Me.OnFrameChanged)) ImageAnimator.Animate(mort(1), New EventHandler(AddressOf Me.OnFrameChanged)) currentlyAnimating = True End If End Sub Private Sub OnFrameChanged(ByVal o As Object, ByVal e As EventArgs)
'Force a call to the Paint event handler. Me.Invalidate() End Sub Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
AnimateImage() ImageAnimator.UpdateFrames()
e.Graphics.DrawImage(mort(0), 0, 0) e.Graphics.DrawImage(mort(1), 0, 0) If count > 0 Then DrawRectangle(e.Graphics, count) End If End Sub
#Region "RECTANGLES" Private Class datarectangle Public left As Integer Public top As Integer Public width As Integer Public height As Integer
'tu peux ajouter le brush pour remplir le rectangle Public thepen As System.Drawing.Brush 'le constructeur Public Sub New(ByVal leftrect As Integer, ByVal toprect As Integer, ByVal widthrect As Integer, ByVal heightrect As Integer, ByVal penrect As System.Drawing.Brush) left = leftrect top = toprect width = widthrect height = heightrect thepen = penrect End Sub End Class Private listdatarectangle As New List(Of datarectangle)
Private Sub DrawRectangle(ByRef gr As System.Drawing.Graphics, ByVal count As Integer) For iter = 0 To count - 1 gr.DrawImage(mort(0), listdatarectangle(iter).left, listdatarectangle(iter).top) 'gr.FillRectangle(listdatarectangle(iter).thepen, listdatarectangle(iter).left, listdatarectangle(iter).top, listdatarectangle(iter).width, listdatarectangle(iter).height)
Next End Sub
#End Region
Private Sub Form1_Click(sender As System.Object, e As System.EventArgs) Handles MyBase.Click rec = New datarectangle(Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y, 50, 50, Brushes.Black) listdatarectangle.Add(rec) count += 1 Me.Refresh() End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load mort(0) = New Bitmap("C:\Users\DJ Naoki\Documents\vb\client jeu\client jeu\bin\Debug\gamedata\GIF\mort.gif") mort(1) = New Bitmap("C:\Users\DJ Naoki\Documents\vb\client jeu\client jeu\bin\Debug\gamedata\GIF\piece.gif") End Sub End Class
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 30 déc. 2013 à 16:43
Bonjour
Pas si brouillon que ça, j'ai vu pire...
2 choses:
1- pouvoir déplacer un GIF
Il faut utiliser les évènements "mousexxx" et non plus le Form_Click
L'idée étant de déterminer si au moment du MouseDown le curseur se trouve dans un GIF ou pas, s'il l'est alors if faudra déplacer ce GIF, si non on peut en créer un nouveau
il te faut une nouvelle propriété (Rectangle) dans ton objet datarectangle qui servira à déterminer si le click se trouve dans l'image ou non
ex :
Private Class datarectangle
...
ReadOnly Property rectangle As Rectangle
Get
Return New Rectangle(left, top, width, height)
End Get
End Property
...
ensuite dans la class Form1 on défini un membre pour mémoriser si un GIF a été sélectionné et dans le gestionnaire d'évènement Form1_MouseDown on test
exemple:
Dim SelectedDatarectangle As datarectangle
Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown
SelectedDatarectangle = Nothing
For Each datarectangle As datarectangle In listdatarectangle
If (datarectangle.rectangle.Contains(e.Location)) Then SelectedDatarectangle = datarectangle
Next
End Sub
Dans le gestionnaire d'évènements Form1_MouseMove si un GIF est sélectionné on le déplace
exemple
Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles MyBase.MouseMove
If (Not SelectedDatarectangle Is Nothing) Then
SelectedDatarectangle.Location = e.Location
End If
End Sub
Dans le gestionnaire d'évènement Form1_MouseUp si un GIF est sélectionné on ne fait rien, si non on en crée un nouveau (c'est ton code original)
attention, penser à remettre SelectedDatarectangle = Nothing en fin du Form1_MouseUp pour annuler la sélection en cours
2-Choisir son image
Là il faut ajouter un propriété Image à ton objet datarectangle
Lorsque tu crées un nouvel élément affiche un boite de dialog (OpenFileDialog) pour sélectionner l'image et affecte là à l'élément.
c'est cette image que tu devras dessiner dans la fonction DrawRectangle
merci !
dsl je ne t'ai rien expliquer >< en faite l'idée c'est que les gifs sont animés et en faite le chemin d'Access du gif est dans un fichier map le drawrectangle sert de hitbox et le déplacement ce fait par des variables géré par le jeu
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 31 déc. 2013 à 10:59
Bonjour
Désolé mais je ne comprend pas ce que tu veux dire.
djnaoki
Messages postés23Date d'inscriptionsamedi 17 novembre 2012StatutMembreDernière intervention18 juin 2015 31 déc. 2013 à 14:30
en faite ces gif animé serons les ennemies donc il doivent avoir une hit box et c'est le jeu qui les déplacera
merci