| |
|
|
p.specht
| O-Text Jonathan:
cet Code-Schnipsel peux bestimmt quelqu'un gebrauchen:
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 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 12.06.2021 ▲ |
|
|
|