Español
Fuente/ Codesnippets

Trackmenu en otro Fenstern; Bilder vorladen / puffern

 

p.specht

O-Texto Jonathan:

Diese Code-Schnipsel kann determinado alguien gebrauchen:
 $H Windows.ph
'POINT-Struktur
Struct lpPoint = X&, Y&

Proc TrackMenuExt

    Parámetros hWnd&, X&, Y&
    Declarar Pnt#
    Dim Pnt#, lpPoint
    Pnt#.X& = X&
    Pnt#.Y& = Y&
    ~ClientToScreen(hWnd&, Addr(Pnt#))
    ~ScreenToClient(%hwnd, Addr(Pnt#))
    TrackMenu Pnt#.X&, Pnt#.Y&
    Disponer Pnt#

ENDPROC


Ist ne einfache Rutina, con el uno en una otro Ventana como el Ventana principal una TrackMenu redactar kann. MenuItem() funktioniert así como gehabt.

Wenn uno en un Programa viele Bilder características y esta no siempre otra vez de el Festplatte geladen voluntad debería, uno aber auch no Lust ha, cada Bild al Anfang ausdrücklich a invitar, puede ser esta Routinen nehmen:
'Zum Puffern de Bildern
Declarar BufferedImageFiles$'Liste el ya gepufferten Bilder, getrennt por "|"
Declarar hBufferedImages&[]'Handles el gepufferten Bilder

SubProc Crear.hPicBuffered

    Parámetros Typ&, S$
    Declarar NewImg&

    If @Len(BufferedImageFiles$) = 0

        BufferedImageFiles$ = "|"

    EndIf

    If Typ& = -1

        Caso negativo @InStr("|" + @Upper$(S$) + "|", @Upper$(BufferedImageFiles$))

            BufferedImageFiles$ = BufferedImageFiles$ + S$ + "|"
            hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))] = @Crear("HPIC", -1, S$)

        EndIf

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

    Más

        NewImg& = @Crear("HPIC", Typ&, S$)

    EndIf

    Volver NewImg&

ENDPROC

SubProc Crear.hSizedPicBuffered

    Parámetros Typ&, S$, X&, Y&, N&
    Declarar NewImg&, XN&, YN&, Faktor1!, Faktor2!

    If @Len(BufferedImageFiles$) = 0

        BufferedImageFiles$ = "|"

    EndIf

    If Typ& = -1

        Caso negativo @InStr("|" + @Upper$(S$) + "|", @Upper$(BufferedImageFiles$))

            BufferedImageFiles$ = BufferedImageFiles$ + S$ + "|"
            hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))] = @Crear("HPIC", -1, S$)

        EndIf

        If N& = 1

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

            If Faktor1! < Faktor2!

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

            Más

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

            EndIf

        Más

            XN& = X&
            YN& = Y&

        EndIf

        NewImg& = @Crear("hNewPic", XN&, YN&, 0)
        StartPaint NewImg&
        DrawSizedPic hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))], 0, 0 - XN&, YN&; 0
        EndPaint

    Más

        NewImg& = @Crear("hSizedPic", Typ&, S$, X&, Y&, N&)

    EndIf

    Volver NewImg&

ENDPROC

Proc DrawSizedPicBuffered

    Parámetros S$, X&, Y&, DX&, DY&, N&

    If @Len(BufferedImageFiles$) = 0

        BufferedImageFiles$ = "|"

    EndIf

    Caso negativo @InStr("|" + @Upper$(S$) + "|", @Upper$(BufferedImageFiles$))

        BufferedImageFiles$ = BufferedImageFiles$ + S$ + "|"
        hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))] = @Crear("HPIC", -1, S$)

    EndIf

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

ENDPROC

Proc DrawPicBuffered

    Parámetros S$, X&, Y&, N&

    If @Len(BufferedImageFiles$) = 0

        BufferedImageFiles$ = "|"

    EndIf

    Caso negativo @InStr("|" + @Upper$(S$) + "|", @Upper$(BufferedImageFiles$))

        BufferedImageFiles$ = BufferedImageFiles$ + S$ + "|"
        hBufferedImages&[@InStr('|' + @Upper$(S$) + '|', @Upper$(BufferedImageFiles$))] = @Crear("HPIC", -1, S$)

    EndIf

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

ENDPROC

Proc DeleteImageBuffer

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

        If hBufferedImages&[&bucle]

            DeleteObject hBufferedImages&[&bucle]

        EndIf

    EndWhile

ENDPROC


El Procs sustituir Crear("HPIC"), Crear("hSizedPic"), DrawPic y DrawSizedPic en ihrer Form para Laden de Bildern de el Festplatte. Wird una Bild para ersten Tiempo geladen, invitar esta Routinen el Bild en el RAM y behalten hay una Kopie su. Wird el Bild erneut geladen, se el Kopie en el RAM benutzt y no otra vez de el Festplatte geladen. Am Ende debería uno DeleteImageBuffer no vergessen, así el ganzen Handles el Kopien otra vez freigegeben voluntad.

Saludo
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


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

1.342 Views

Untitledvor 0 min.
Gast.0815vor 101 min.
Member 862464112.05.2024
RGH26.12.2021
p.specht20.11.2021
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie