| |
|
|
p.specht
| O-Texto Jonathan:
Diese Code-Schnipsel kann determinado alguien gebrauchen:
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 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 12.06.2021 ▲ |
|
|
|