Bildpositionen zwischenspeichern

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Xeres

Moderator

BeitragFr, Jan 02, 2009 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Idee nochmal ausführlich... in Ermangelung eines passendes Programms ungetestet.
Code: [AUSKLAPPEN]
Type TBildPos
   Field X, Y
   Field IMGLink.TBild
End Type

Type TBild
   Field Bild
   Field Pfad$
End Type


Function Helligkeit_auswerten()
   
   ;[...]
   
   ; Der Pixel/Bereich soll mit diesem Bild später gezeichnet werden:
   Local Pfad_zum_passenden_Bild$
   
   ; Die Position des Pixels wird gespeichert...
   Local Pos.TBildPos = New TBildPos
   Pos\X = X_Kord
   Pos\Y = Y_Kord
   ; Der Pfad wird verglichen, damit er nur einmal vorhanden ist:
   Pos\IMGLink = GetBildPfad(Pfad_zum_passenden_Bild$)
   
   
   ; Für jeden Pixel...
   
   ;[...]
   
   
End Function

;*** Funktion liefert die Tbild-Instanz zurück, die den Pfad enthält
;*** Ist der Pfad noch nicht registirert, wird er hinzugefügt und zurückgegeben...
Function GetBildPfad.TBild(fpfad$)
   Local b.TBild
   For b = Each TBild
      If b\Pfad$ = fpfad$ Then Return b
   Next
   ;** Bild ist noch nicht vorhanden, neuen eintrag erzeugen undzurückliefern..
   b = New TBild
   b\Pfad$ = fpfad$
   Return b
End Function

;*** Alle Pixel durch wurden durch Helligkeit_auswerten() oder was auch immer
;*** Bestimmt, nur noch das Bild muss erstellt werden...
Function BilderZeichnen()
   
   ;*** Im Imagebuffer zeichnen usw. bitte selbst ergänzen ;)
   
   Local Pos.TBildPos, b.TBild
   
   ;*** EDIT Denkfehler : For...Each erfüllt auch hier den Zweck...
   For b = Each TBild
      
      ;*** Bild laden...
      b\Bild = LoadImage(b\Pfad$)
      
      For Pos = Each TBildPos
         ;*** Nur das Bild ist <> Null, das wir aktuell geladen haben...
         
         If Pos\IMGLink\Bild <> Null Then
            DrawImage(Pos\IMGLink\Bild, Pos\X, Pos\Y)
            ;*** EDIT Pos ist abgearbeiten und braucht nicht mehr durchgegangen zu werden
            Delete Pos
         EndIf
         
      Next
      
      ;*** Bild abgearbeitet
      FreeImage b\Bild
      Delete b
      
   Next
   
End Function


Edit:
Code Verbesserungen:
- Delete Pos
- For...Each statt Repeat...Forever
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
  • Zuletzt bearbeitet von Xeres am Sa, Jan 03, 2009 10:11, insgesamt 2-mal bearbeitet

mabox

BeitragFr, Jan 02, 2009 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
@Tedy Lesen!, Verstehen!, Antworten!.........ich glaube nicht, das du das Problem verstanden hast.

@skey-z Sorry ich geb mir echt mühe, aber ich versteh wirklich nicht was du mir sagen willst. Ich zweifle gerade echt an meinem Verstand......ich find irgendwie kaum einen Zusammenhang zwischen meinem Problem und dem was du da geschrieben hast.
kannst du das noch mal irgendwie idiotensicher erklären?

@Xeres ich schaus mir gleich mal an.

EDIT: Sehr großen Dank an Xeres!!! dein Code hat mir echt viel gebracht. Ich musste ihn nur in meinen Code einbauen, eine Zeile (Delete Pos (nach dem einzeichnen des Bilds)) hinzufügen und schon hats funktioniert.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group