ImgLoad - Image Loader und Ladebalken
Übersicht

![]() |
ozzi789Betreff: ImgLoad - Image Loader und Ladebalken |
![]() Antworten mit Zitat ![]() |
---|---|---|
ImgLoad ist eine kleine Funktionssammlung welche hilft Bilder zu laden / verwalten
Die Funktionen ermöglichen das Laden aller Bilder in einem Ordner, diese Bilder werden als Type gespeichert, es wird eine ID, ein Handle, den Namen, den Pfad zum Bild, die Filegrösse (in KB) und die Grösse (X-Y) gespeichert. Dies erleichtert dem einem oder anderen einiges an Arbeit, dazu wird die Gesamtgrösse der Bilder errechnet, es werden Variabeln erstellt die einem ermöglichen einen Ladebalken einfach darzustellen, dieser Ladebalke zeigt sehr genau den tatsächlichen Ladefortschritt an! Ein Bild wird ganz einfach ausgegeben, drawimagep(name,x,y) in der Funktion wird das Type durchsucht und den passenden Handle rausgesucht, für optimalen Komfort :O Nun kann man auch ein Bildzeichnen, und dazu ganz einfach die Grösse daneben schreiben, euch sind keine Grenzen gesetzt! ^^ Todo: Bilder löschen Per ID sortieren oder nacheinander abspielen An der Performance basteln jpeg bilder sollen auch geladen werden, nicht "nur" jpg ![]() Wünsche? mfg & hf ozzi Funktionen: ->drawbar() , nur ein Dummy zum Zeichnen des Balken ->load(pfad$,draw), liest alle Bilder aus einem Ordner ein, wenn draw=1 dann wird der Ladebalken gezeichnet ->show(mode), bei mode=1 wird der Type Inhalt mittels Print, bei mode=2 mittels Debuglog ausgeben ->updatebar(), updaten die Variablen für den Ladebalken BlitzBasic: [AUSKLAPPEN]
Anwendungsbeispiel (pfad anpassen!) BlitzBasic: [AUSKLAPPEN]
|
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
- Zuletzt bearbeitet von ozzi789 am Di, Dez 01, 2009 21:21, insgesamt einmal bearbeitet
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sehe leider keinen großen nutzen, da die performance furchtbar wird bei vielen bildern
(type linear durchsuchen um ein bild zu zeichnen, statt das handle direkt zu verwenden) und ein ladebalken am anfang mag ja hübsch sein - aber dafür bei jedem einzigen zeichen-befehl zeit verlieren ? lieber nicht ![]() oder hab ich was falsch verstanden/fällt dir ein anwendungsgebiet ein bei dem das ganze sinn macht? |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also wenn schon durchsuchen, dann bei einem Fund wenigstens noch Exit![]() Code: [AUSKLAPPEN] Function drawimagp(drawhandle$,drawx,drawy) ; Bildanzeigen
For p.picture = Each picture If p\name$=drawhandle$ DrawImage p\handle_p,drawx,drawy Exit EndIf Next End Function Vielleicht kannst du, um den von BBPro2 angesprochenen Kritikpunkt ein wenig auszubessern ne 2. Function machen wie "DrawImgDirect" oder so, wo man das Handle angibt. Und die Leute die es bequemer haben wollen die nehmen deine jetzige Funktion. An sich kann der eine oder andere dein Werk sicher mal brauchen (Wenn ich dran denke wieviele nach dem Ladebalken fragen ^^) aber ich persönlich dreh da lieber mein eigenes Ding. Kleine Kritik noch am Rande: "drawimagp" is doch ne fürchterliche Functionsbezeichnung... [EDIT] Hab den Lade-Code durchgeschaut und noch 2 Sachen: Warum nicht Flip 0 beim Fortschrittsbalken? Was bringt das? Hast du vergessen n Backshlash in die Anführungszeichen zu setzen? ![]() Code: [AUSKLAPPEN] If Right(pfad$,1)<>"" Then pfad$=pfad$+"" ; Falls es am Ende kein \ hat ergänzen
mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh danke für das Feedback ![]() Ja ich lass mir was einfallen wie man sonst noh optimieren kann und ne funktion die direkt den handle anspricht werd ich noch einbauen Jep da fehlt ein \ ![]() mfg |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sry aber ich finde die Idee mit dem durchsuchen sehr schwachsinnig. Lieber eine Function mehr schreiben die ein Handle für einen Namen rausschreibt als immer wieder neu durchsuchen zu lassen. Hätte immer noch komfort. Weil so müsste für 1000 gemalte Bilder in einer Schleife nicht immer alles durchsucht werden, sondern einmal, vor oder in der Schleife ist mir egal, aber dann braucht man nur das Handle.
Sonst gute idee ^^ mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
So habe das Exit eingebaut und etwas verbessert.
Dazu habe ich mal gemessen, bei 524 Bildern im Typ dauerte es genau mal 0 Millisecs um den richtigen Eintrag zu finden und zu zeichen, sollte schnell genug sein oder? ![]() Wie mein ihr direkt zeichen? Also direkt den Handle das man zmb bild.png als handle benützt? Ich dachte eher an -> Blitz Array dort drinn wird Handle (bild1 bild2 und die dazugehörige ID) gespeichert, nun sucht man findet die ID und springt zu diesem Type, was denkt ihr ist das besser? (sollte ja noch etwas schneller sein) mfg ozzi |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
naja 1. 524 bilder muss nicht unbedingt viel sein
2. 0 millisekunden auf welchem pc ![]() ![]() |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nuja ein BB durchschnitts Game wird wohl nicht so schnell über 524 bilder kommen oder? ![]() Joa auf meinem PC siehe sig @home ;D Wäre froh wenn du (type linear durchsuchen um ein bild zu zeichnen, statt das handle direkt zu verwenden) die Sache mit dem direkt verlinken erklären würdest mfg ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
n-Halbleiter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
OH Handle![]() ![]() Falls du das überhaupt nicht willst, wäre vielleicht ein Tree mit Keys eine Idee? Wäre dann "nur" O(log(n)) anstatt O(n). ![]() |
||
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit Ploing! Blog "Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935) |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ozzi789 hat Folgendes geschrieben: Nuja ein BB durchschnitts Game wird wohl nicht so schnell über 524 bilder kommen oder?
![]() Joa auf meinem PC siehe sig @home ;D Wäre froh wenn du (type linear durchsuchen um ein bild zu zeichnen, statt das handle direkt zu verwenden) die Sache mit dem direkt verlinken erklären würdest mfg ![]() Code: [AUSKLAPPEN] Function drawimagep(drawhandle$,drawx,drawy) For p.picture = Each picture If p\name$=drawhandle$ DrawImage p\handle_p,drawx,drawy Exit EndIf Next End Function hier liegt das problem wenn ich 1000 bilder habe die die namen "peter1", "peter2", ... "peter1000" in eben dieser reihenfolge haben und so im type gespeichert werden (insbesondere in dieser reihenfolge) habe ich ein laufzeitproblem wenn ich später sagen wir 100 mal auf das bild "peter1000" zugreifen möchte. anstatt drawimage peter1000, 0, 0 würde dein programm jedes mal in diesen 100 fällen den gesamten type durchlaufen und nach dem entsprechenden bild suchen um es zu zeichnen hierbei würde es genau 999 * 100 mal "sinnlos" feststellen, dass es weitersuchen muss bis es das richtige bild findet. wenn du einen stapel von cds hast der senkrecht auf dem boden steht - würdest du deine lieblingscd nur sehr ungern ganz unten liegen haben und jedes mal wenn du sie brauchst von ganz unten rauskramen müssen. du würdest sie dir aus dem stapel rauslegen damit du sie immer "direkt" hören kannst. dein programm legt sie aber immer wieder unten hin ![]() das problem lässt sich nicht wirklich beheben, da die grundstruktur deines programms eben genau das verlangt. ich sage nicht dass es schlecht programmiert ist (sicher geht es besser, aber an sich machst du das was du tun musst) - ich sage nur dass für mich diese funktion nicht in frage käme da sie laufzeit frisst - unweigerlich. im übrigen ist dein pc deutlich stärker als ein durchschnittspc wodurch deine aussage von 0 ms nicht aussagekräftig wird ![]() |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe soeben eine gute Idee gehabt, ich sortiere die Handels im Type alphabetisch.
Dann springe ich in die Mitte des Types, ist der Handle name "kleiner" als M suche ich nur in der ersten Hälfte im Type, wenn nicht im der zweiten Häflte (SQL macht das doch änhlich) Oder Ich mach es so das alle Bilder umbennant werden zmb Bild.png -> Bild.pic Bild2.jpg -> Bild2.pic So wird das ganze überflüssig wenn ich jetzt zum bsp drawimagep (bild2) mache füge ich einfach .pic aus und hole es mittels dem Pfad direkt raus... Oder Ich erstelle einen Array, mit 2 Spalten. In der ersten Steht der Name in der zweiten der Handle Gleiches verfahren wie zuvor aber ich denke mal der Array ist schneller als der Type ? mfg |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das problem an type ist: du KANNST nicht in die mitte des types springen
und auf diese art suchen. wie willste das denn machen ? und ja fast alle programmiersprachen etc unterstützen eine solche suche sie heißt binäre suche und hat O(log n) was deutlich schneller ist als das von dir vorgestellte. aber wie gesagt - mit types und ohne vorherige sortierung ist das nicht umsetzbar |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group