Questions sur la gestion du chargement des images (Image Handler)

Jayme65 Messages postés 60 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 26 mars 2019 - 3 avril 2011 à 19:13
 Utilisateur anonyme - 3 avril 2011 à 23:42
Bonjour,

En 2 mots, l'application que je développe est un front-end, une interface "graphique".
L'utilisateur navigue dans une liste de jeux et a notamment une copie d'écran du jeux qui s'affiche à droite.
En voici un screenshot de l'état actuel, pour mieux comprendre



Ma question est double:
1) y a t-il un gestionnaire (image handler) de chargement (l'équivalent d'un onLoad Init, onLoad Complete, onLoad Error) pour toutes les étapes du chargement?
Quelque chose qui permettrai notament une action si il y a une erreur de chargement (image non présente, par ex.) ou dois-je simplement utiliser dans ce cas bien précis un:

If My.Computer.FileSystem.FileExists(snapPath) Then

2) le plus handicapant pour moi, pour l'instant..et qui pourrait avoir un rapport avec la question précédente:
Si l'utilisateur navigue "gentiment" dans la liste, en pressant le curseur bas, pas de soucis. Mais si on le presse très rapidement (ou pire si l'on laisse son doigt dessus) pour arriver plus rapidement au jeux de son choix, l'affichage devient saccadé, le temps que les screenshots soient chargés un après l'autre.
Or ce n'est pas le plus important. Le plus important serait que la liste défile à toute vitesse et ne soit pas freinée par le chargement des screenshots, du moins jusqu'à ce que cette vitesse devienne raisonnable, c'est à dire qu'elle corresponde au temps 'normal' pour charger le screenshot
Dans sa version initiale (développée en ActionScript, et compliée en .exe par MDM Zinc), c'était le cas.

Pause: merci d'avoir eu la patience de me lire jusqu'içi, pour exposer clairement mon soucis ;-)

Donc, je me dis que la procédure de chargement devait être interrompue, quand une nouvelle procédure était lancée. En d'autres mots, que l'affichage ne devait se faire que quand l'image était taguée comme 'onLoad Complete=true'

Donc voila, cette question est sans doute en rapport avec la précédente, et en résumé pourrait se poser ainsi:
Comment puis-je donner la priorité à ma liste en premier, et que l'image ne soit affichée que quand elle est chargée et qu'il n'y a pas eu entretemps un autre appel au chargement avant que la précédente ne fut affichée.

Un grand merci pour votre aide!!

3 réponses

Utilisateur anonyme
3 avril 2011 à 22:04
Bonsoir,
Tu devrais charger tes images au lancement de ton application dans une liste fortement typée. List(Of Image)
Puis y faire simplement appel ensuite à l'aide d'un index.
Bonne soirée.
0
Jayme65 Messages postés 60 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 26 mars 2019 2
3 avril 2011 à 23:03
Merci pour ta réponse...mais il y a plus de 7000 images!
0
Utilisateur anonyme
3 avril 2011 à 23:42
Un petit timer dynamique alors :
Public Class Form1
    Dim tmr As New Timers.Timer(200)
    Dim Index As Integer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.KeyPreview = True
        AddHandler tmr.Elapsed, AddressOf tmr_Elapsed
    End Sub

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.Up Then Index -= 1
        If e.KeyCode = Keys.Down Then Index += 1
        tmr.Stop()
    End Sub

    Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
        tmr.Start()
    End Sub

    Private Sub tmr_Elapsed(ByVal sender As Object, ByVal e As Timers.ElapsedEventArgs)
        tmr.Stop()
        Debug.Print(Index.ToString)
        'charger image avec Index...
    End Sub
End Class
0
Rejoignez-nous