Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Probleme: CreateMaskFromColor  (Lu 7999 fois)

0 Membres et 6 Invités sur ce sujet

Blabla51

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Probleme: CreateMaskFromColor
« le: Juin 26, 2012, 08:33:43 pm »
Bonjour,

Commençant à découvrir la version 2.0, je me retrouve avec plusieurs problème, comme celui-ci:

Impossible de trouver le point d'entrée 'sfImage_createMaskFromColor' dans la DLL 'csfml-graphics-2'.

Qui vient du code:

        Dim mama As Image = New Image("teste2.png")
        mama.CreateMaskFromColor(mama.GetPixel(0, 0))

Merci de m'éclairer dans ce code défectueux ^^
« Modifié: Juin 26, 2012, 10:07:27 pm par Laurent »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #1 le: Juin 26, 2012, 09:13:50 pm »
C'est un problème connu, la fonction n'est pas exportée dans CSFML. Mais je n'ai aucune idée de pourquoi, j'ai vérifié le code 10 fois et il n'y a rien de spécial sur cette fonction.
Laurent Gomila - SFML developer

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #2 le: Juin 26, 2012, 10:07:48 pm »
Ah pardon, en fait il y avait une erreur assez évidente sur cette fonction, j'ai dû confondre avec autre chose.
Laurent Gomila - SFML developer

Blabla51

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #3 le: Juin 26, 2012, 10:40:08 pm »
Est-ce que c'est pareil avec VertexArray ?

Impossible de charger la DLL 'csfml-graphics-2': Le module spécifié est introuvable. (Exception de HRESULT : 0x8007007E)

Cela vient de la ligne :
 
Dim lolilol As New VertexArray
Mais j'pref mettre tout le code ^^"

Code:

Imports System
Imports System.Threading
Imports System.Diagnostics
Imports SFML.Audio
Imports SFML.Window
Imports SFML.Graphics
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
        Dim lolilol As New VertexArray
        Dim Rendu As New RenderWindow(Me.Handle)
        Rendu.SetFramerateLimit(50)
        While (Rendu.IsOpen And Me.Visible)
            System.Windows.Forms.Application.DoEvents()
            lolilol(0) = New Vertex(New Vector2f(10, 0))
            lolilol(1) = New Vertex(New Vector2f(20, 0))
            lolilol(2) = New Vertex(New Vector2f(30, 2))
            lolilol(3) = New Vertex(New Vector2f(40, 5))
            Rendu.Draw(lolilol)
            Rendu.Display()
            lolilol.Dispose()
            lolilol = New VertexArray
        End While
        lolilol.Dispose()
        Rendu.Dispose()
    End Sub

End Class
« Modifié: Juin 26, 2012, 10:47:05 pm par Blabla51 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #4 le: Juin 27, 2012, 08:14:41 am »
Tu veux dire que sans la déclaration du VertexArray ça fonctionne ? Parce que si la DLL est introuvable, a priori ça vaut pour tout le module graphique.
Laurent Gomila - SFML developer

Blabla51

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #5 le: Juin 27, 2012, 08:08:17 pm »
En faite, seul la fonction VertexArray ne fonctionne pas, pour exemple, j'ai fait un test:

J'ai fait mon code, avec déclaration et ajout de XX(0).position = ...

Et l'autre avec juste la déclaration.

Au final, la première se ferme aussi vite qu'elle s'ouvre sans montrer d'erreur.
La deuxième, elle, fonctionne dur comme fer.

C'est quelque peu embêtant ^^

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #6 le: Juin 27, 2012, 08:37:38 pm »
J'ai pas tout compris là ;D
Laurent Gomila - SFML developer

Blabla51

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #7 le: Juin 27, 2012, 09:25:58 pm »
J'ai du mal à m'exprimer la dessus, je l'avoue =P

Alors, c'est parti !

Imports System
Imports System.Threading
Imports System.Diagnostics
Imports SFML.Audio
Imports SFML.Window
Imports SFML.Graphics
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
        Dim lolilol As New VertexArray
        'lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(255, 255, 0, 0)))
        'lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(255, 0, 255, 0)))
        'lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(0, 255, 255, 0)))
        'lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(255, 255, 255, 0)))
        'lolilol(0) = New Vertex(New Vector2f(10, 0))
        'lolilol(1) = New Vertex(New Vector2f(20, 0))
        'lolilol(2) = New Vertex(New Vector2f(30, 2))
        'lolilol(3) = New Vertex(New Vector2f(40, 5))
        Dim Intef, deux As Integer
        Dim Rendu As New RenderWindow(Me.Handle)
        Dim forme As New VertexArray()
        Dim Mlie As Stopwatch = New Stopwatch()
        Dim I2 As New Image("teste.png")
        'I2.CreateMaskFromColor(I2.GetPixel(0, 0))
        Dim I3 As New Texture(I2)
        Dim S As New Sprite(I3)
        Dim H, W, H1, H2, H3, H4, L1, L2, L3, L4 As Long
        Dim Tick As Integer = Environment.TickCount And Int32.MaxValue
        Dim Tick2 As String
        Dim BoolH As Boolean = True
        Dim BoolR As Boolean = True
        Dim arial = New Font("arial.ttf")
        Dim Musics = New Music("LaZik")
        Dim De As TimeSpan
        Musics.Play()
        Rendu.SetFramerateLimit(50)
        H1 = 0
        H2 = 32
        H3 = 1
        H4 = 1
        L1 = 5
        L2 = 0
        L3 = 0
        L4 = 0
        H = 32
        W = 3
        Mlie.Start()
        While (Rendu.IsOpen And Me.Visible)
            System.Windows.Forms.Application.DoEvents()
            'Rendu.Clear(New Color(0, 0, 0))
            Mlie.Stop()
            De = Mlie.Elapsed
            Intef = Val(Mlie.ElapsedMilliseconds.ToString)
            If Intef = 0 Then
                Intef = 1
            End If
            deux = 1 * 1000 / Intef
            Mlie.Restart()
            lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(255, 255, 0, 0)))
            lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(255, 0, 255, 0)))
            lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(0, 255, 255, 0)))
            lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(255, 255, 255, 0)))
            S.Position = New Vector2f(32, 32)
            'S.SubRect = New IntRect(H1, 0, H2, 32)
            S.Color = New Color(0, 0, 0, 127)
            S.Position = New Vector2f(0, 0)
            S.Rotation = -10
            S.Scale = New Vector2f(1, 1)
            Rendu.Draw(S)
            S.Position = New Vector2f(32, 32)
            S.Color = New Color(255, 255, 255, 255)
            S.Rotation = 0
            Rendu.Draw(lolilol)
            Rendu.Draw(S)
            Rendu.Display()
            Tick = Environment.TickCount And Int32.MaxValue
            Tick2 = Tick
            Me.Text = deux.ToString
            If L1 < 256 And L1 > -1 Then
                If L1 = 255 Then
                    L4 = 1
                End If
                If L1 = 0 Then
                    L4 = 0
                End If
                If L4 = 0 Then
                    L1 = L1 + 1
                End If
                If L4 = 1 Then
                    L1 = L1 - 1
                End If
            End If
            If Tick2(6) = "2" And BoolR = True Or Tick2(6) = "7" And BoolR = True Then
                BoolR = False
                H4 = H4 + 1
                If H4 = 10 Then
                    H4 = 0
                End If
                If H1 = 0 Then
                    H1 = 32
                    H2 = 64
                ElseIf H1 = 32 And H3 = 1 Then
                    H1 = 64
                    H2 = 96
                    H3 = 0
                ElseIf H1 = 64 Then
                    H1 = 32
                    H2 = 64
                ElseIf H1 = 32 And H3 = 0 Then
                    H1 = 0
                    H2 = 32
                    H3 = 1
                End If
            ElseIf Tick2(6) = "3" And BoolR = False Or Tick2(6) = "8" And BoolR = False Then
                BoolR = True
            End If
            lolilol.Dispose()
            lolilol = New VertexArray
            S.Dispose()
            S = New Sprite(I3)
        End While
        Musics.Stop()
        S.Dispose()
        Musics.Dispose()
        arial.Dispose()
        I2.Dispose()
        Rendu.Dispose()
    End Sub
End Class

Voilà le probleme: le code ci-dessus fonctionne, sans afficher le VertexArray (lolilol)
Je ne sais pas si VertexArray.Append ajoute bien un point de la figure, mais pas de figure affichée sur l'application.

Si je remplace les .append par des lolilol(0).position = new blablabla, l'application se lance et provoque un arrêt immédiat de l'application, sans mettre d'erreur.
J'ai pu remarquer par différents tests que le problème se trouve sur les .position

Est-ce un énorme problème de code, ou bien normal ? ^^"

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #8 le: Juin 27, 2012, 09:45:59 pm »
Citer
Je ne sais pas si VertexArray.Append ajoute bien un point de la figure, mais pas de figure affichée sur l'application.
Ah, dans ce cas il faut se concentrer sur ça alors. C'est possible d'avoir un code minimal qui produit uniquement le problème, sans toutes ces fioritures ?

Citer
Si je remplace les .append par des lolilol(0).position = new blablabla, l'application se lance et provoque un arrêt immédiat de l'application, sans mettre d'erreur.
C'est comme un tableau, si tu accèdes à un élement du vertex array qui n'existe pas, ça plante ;)

Et... où est passée cette erreur de module csfml-graphics-2 introuvable ?
Laurent Gomila - SFML developer

Blabla51

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #9 le: Juin 27, 2012, 10:09:51 pm »
Si jamais je transforme le code précédent en:

Imports System
Imports System.Threading
Imports System.Diagnostics
Imports SFML.Audio
Imports SFML.Window
Imports SFML.Graphics
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
        Dim lolilol As New VertexArray
        Dim Rendu As New RenderWindow(Me.Handle)
        Rendu.SetFramerateLimit(50)
        While (Rendu.IsOpen And Me.Visible)
            System.Windows.Forms.Application.DoEvents()
            lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(255, 255, 0, 0)))
            lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(255, 0, 255, 0)))
            lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(0, 255, 255, 0)))
            lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(255, 255, 255, 0)))
            Rendu.Draw(lolilol)
            Rendu.Display()
            lolilol.Dispose()
            lolilol = New VertexArray
        End While
        lolilol = New VertexArray
        Rendu.Dispose()
    End Sub
End Class

L'erreur: Impossible de charger la DLL 'csfml-graphics-2': Le module spécifié est introuvable. (Exception de HRESULT : 0x8007007E)
Celle-ci apparaît seulement sur un code cours, d'après ce que je peux voir.
L'erreur apparaît sur la ligne
Dim lolilol As New VertexArray
Si je remplace VertexArray par VertexArray(), cela provoque la même erreur.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #10 le: Juin 27, 2012, 10:45:54 pm »
Citer
Celle-ci apparaît seulement sur un code cours, d'après ce que je peux voir.
Permet moi de douter que ce soit la vraie raison ;D

Ca part un peu dans tous les sens, essaye de faire des tests rigoureux sur des exemples minimaux. Et ensuite, on essayera de les prendre un à la fois si tu veux bien.
Laurent Gomila - SFML developer

Blabla51

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Re : Probleme: CreateMaskFromColor
« Réponse #11 le: Juin 27, 2012, 11:17:11 pm »
Après réflexion, et vérification, les librairies d'extension n'ont pas été correctement copié.

Par contre, toujours un problème: le Draw

Je n'ai toujours pas de polygone(ici carré) qui s'affiche dans le code suivant:

Dim lol As PrimitiveType = PrimitiveType.Quads
        Dim lolilol As New VertexArray(lol)
        Dim Rendu As New RenderWindow(Me.Handle)
        Rendu.SetFramerateLimit(50)
        While (Rendu.IsOpen And Me.Visible)
            System.Windows.Forms.Application.DoEvents()
            lolilol.Append(New Vertex(New Vector2f(0, 50), New Color(255, 255, 0, 0)))
            lolilol.Append(New Vertex(New Vector2f(50, 50), New Color(255, 0, 255, 0)))
            lolilol.Append(New Vertex(New Vector2f(50, 0), New Color(0, 255, 255, 0)))
            lolilol.Append(New Vertex(New Vector2f(0, 0), New Color(255, 255, 255, 0)))
            Rendu.Draw(lolilol)
            Rendu.Display()
            lolilol.Dispose()
            lolilol = New VertexArray(lol)
        End While
        lolilol.Dispose()
        Rendu.Dispose()

Comment faire pour passer le tableau en formes géométrique ?
Le PrimitiveType est-il utile ?

Merci d'avance, et désolé du dérangement ^^"

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #12 le: Juin 27, 2012, 11:22:57 pm »
Il manque un Render.Clear() dans ta boucle. Et pourquoi recréer le vertex array à chaque tour de boucle ?

Mais surtout, ton problème, c'est que toutes les couleurs que tu utilises ont un alpha à 0 (totalement transparent).

Citer
Le PrimitiveType est-il utile ?
Non, je l'ai mis là pour faire beau :)
Sans rire, oui, ça définit comment les points de ton vertex array seront interprétés en formes géometriques.
Laurent Gomila - SFML developer

Blabla51

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #13 le: Juin 27, 2012, 11:27:47 pm »
T'as pas oublié une fonction genre:

Laurent.MerciBeaucoup
ou encore
Laurent.OnT_Aime
 ? =P

Merci beaucoup, je pensais que le Alpha = 0 était visible, alors que 255 était invisible.

Le but de recréer à chaque fois me permet de faire varier les couleurs, en faisant des dégradés variables.

Rendu.Clear() ne change rien, si je comprend bien, c'est pour repartir d'un écran noir entre chaque fonction ?

En tous cas, merci beaucoup pour ton aide =D

A quand une release avec  CreateMaskFromColor de corrigé ? =D

Et qu'est devenu le SubRect ?
« Modifié: Juin 27, 2012, 11:44:30 pm par Blabla51 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Probleme: CreateMaskFromColor
« Réponse #14 le: Juin 28, 2012, 08:03:58 am »
Citer
Le but de recréer à chaque fois me permet de faire varier les couleurs, en faisant des dégradés variables.
Tu peux simplement changer les couleurs des vertexs existant, au lieu de tout recréer.

Citer
Rendu.Clear() ne change rien, si je comprend bien, c'est pour repartir d'un écran noir entre chaque fonction ?
Oui. Mais ça ne sert pas à rien. C'est comme si tu commençais à dessiner sur une feuille qui contient déjà le dessin de ton voisin, au lieu d'être blanche.

Citer
A quand une release avec  CreateMaskFromColor de corrigé ?
Peut-être bientôt, peut-être pas ;D

Citer
Et qu'est devenu le SubRect ?
TextureRect.
Laurent Gomila - SFML developer