Français
Source/ Codesnippets

Trackmenu dans anderen Fenstern; Bilder vorladen / puffern

 

p.specht

O-Text Jonathan:

cet Code-Schnipsel peux bestimmt quelqu'un gebrauchen:
 $H Windows.ph
'POINT-Struktur
Struct lpPoint = X&, Y&

Proc TrackMenuExt

    Paramètres hWnd&, X&, Y&
    Déclarer Pnt#
    Faible Pnt#, lpPoint
    Pnt#.X& = X&
    Pnt#.Y& = Y&
    ~ClientToScreen(hWnd&, Addr(Pnt#))
    ~ScreenToClient(%hwnd, Addr(Pnt#))
    TrackMenu Pnt#.X&, Pnt#.Y&
    Dispose Pnt#

ENDPROC


Ist ne simple Routine, avec qui on sur einem anderen la fenêtre comme dem Hauptfenster un TrackMenu erstellen peux. MenuItem() funktioniert avec cela comment gehabt.

si on dans einem Programme viele Bilder zeichnet et cet pas toujours wieder de qui Festplatte geladen volonté devrait, on mais aussi aucun Lust hat, chaque Bild am Anfang ausdrücklich trop magasin, peux on cet Routinen prendre:
'Zum Puffern de Bildern
Déclarer BufferedImageFiles$'liste qui bereits gepufferten Bilder, getrennt par "|"
Déclarer hBufferedImages&[]'Handles qui gepufferten Bilder

SubProc Créer.hPicBuffered

    Paramètres Typ&, S$
    Déclarer NewImg&

    Si @Len(BufferedImageFiles$) = 0

        BufferedImageFiles$ = "|"

    EndIf

    Si Typ& = -1

        Si non @InStr("|" + @Upper$(S$) + "|", @Upper$(BufferedImageFiles$))

            BufferedImageFiles$ = BufferedImageFiles$ + S$ + "|"
            hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))] = @Créer(«PCSI», -1, S$)

        EndIf

        NewImg& = @Créer("hPicCopy", hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))])

    D'autre

        NewImg& = @Créer(«PCSI», Typ&, S$)

    EndIf

    Retour NewImg&

ENDPROC

SubProc Créer.hSizedPicBuffered

    Paramètres Typ&, S$, X&, Y&, N&
    Déclarer NewImg&, XN&, YN&, facteur1!, facteur2!

    Si @Len(BufferedImageFiles$) = 0

        BufferedImageFiles$ = "|"

    EndIf

    Si Typ& = -1

        Si non @InStr("|" + @Upper$(S$) + "|", @Upper$(BufferedImageFiles$))

            BufferedImageFiles$ = BufferedImageFiles$ + S$ + "|"
            hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))] = @Créer(«PCSI», -1, S$)

        EndIf

        Si N& = 1

            facteur1! = X& / @Width(hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))])
            facteur2! = Y& / @Height(hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))])

            Si facteur1! < facteur2!

                XN& = X&
                YN& = @Height(hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))]) * facteur1!

            D'autre

                XN& = @Width(hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))]) * facteur2!
                YN& = Y&

            EndIf

        D'autre

            XN& = X&
            YN& = Y&

        EndIf

        NewImg& = @Créer("hNewPic", XN&, YN&, 0)
        Début de peinture NewImg&
        DrawSizedPic hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))], 0, 0 - XN&, YN&; 0
        EndPaint

    D'autre

        NewImg& = @Créer("hSizedPic", Typ&, S$, X&, Y&, N&)

    EndIf

    Retour NewImg&

ENDPROC

Proc DrawSizedPicBuffered

    Paramètres S$, X&, Y&, DX&, DY&, N&

    Si @Len(BufferedImageFiles$) = 0

        BufferedImageFiles$ = "|"

    EndIf

    Si non @InStr("|" + @Upper$(S$) + "|", @Upper$(BufferedImageFiles$))

        BufferedImageFiles$ = BufferedImageFiles$ + S$ + "|"
        hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))] = @Créer(«PCSI», -1, S$)

    EndIf

    DrawSizedPic hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))], X&, Y& - DX&, DY&; N&

ENDPROC

Proc DrawPicBuffered

    Paramètres S$, X&, Y&, N&

    Si @Len(BufferedImageFiles$) = 0

        BufferedImageFiles$ = "|"

    EndIf

    Si non @InStr("|" + @Upper$(S$) + "|", @Upper$(BufferedImageFiles$))

        BufferedImageFiles$ = BufferedImageFiles$ + S$ + "|"
        hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))] = @Créer(«PCSI», -1, S$)

    EndIf

    DrawPic hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))], X&, Y&; N&

ENDPROC

Proc DeleteImageBuffer

    WhileLoop 0, @SizeOf(hBufferedImages&[]) - 1

        Si hBufferedImages&[&loop]

            DeleteObject hBufferedImages&[&loop]

        EndIf

    Endwhile

ENDPROC


qui Procs ersetzen Créer(«PCSI»), Créer("hSizedPic"), DrawPic et DrawSizedPic dans ihrer forme zum magasin de Bildern de qui Festplatte. Wird un Bild zum ersten la fois geladen, magasin cet Routinen cela Bild dans den RAM et behalten là une Kopie en. Wird cela Bild erneut geladen, wird qui Kopie im RAM benutzt et es pas nochmal de qui Festplatte geladen. Am Ende sollte on DeleteImageBuffer pas oublier qc, avec cela qui ganzen Handles qui Kopien wieder freigegeben volonté.

Salut
Jonathan
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
12.06.2021  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

1.350 Views

Untitledvor 0 min.
Gast.0815 vor 4 Tagen
Member 862464112.05.2024
RGH26.12.2021
p.specht20.11.2021
plus...

Themeninformationen

cet Thema hat 1 participant:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie