AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Problem mit Animation / Bearbeiten von Bildern
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Animation / Bearbeiten von Bildern

Ein Thema von lacky · begonnen am 8. Jan 2008 · letzter Beitrag vom 8. Jan 2008
Antwort Antwort
lacky

Registriert seit: 26. Apr 2007
7 Beiträge
 
#1

Problem mit Animation / Bearbeiten von Bildern

  Alt 8. Jan 2008, 14:18
Hallo an alle,
Ich hab hier ein kleines problem und weiß wirklich nicht woran es liegen könnte warum es nicht klappt..
hier erst mal der code:

Delphi-Quellcode:
 
        for m := 1 to 8 do
          begin
            flashbilder[0,0]:=flashbilder[1,0];
            for xi := 1 to 32 do
              begin
                for yi := 1 to 32 do
                begin
                 if flashbilder[0,0].Canvas.Pixels[xi,yi]<>clwhite then
                    begin
                      red := ColorToRGB(flashbilder[0,0].Canvas.Pixels[xi,yi]) and $0000FF;
                      green := (ColorToRGB(flashbilder[0,0].Canvas.Pixels[xi,yi]) and $00FF00) shr 8;
                      blue := (ColorToRGB(flashbilder[0,0].Canvas.Pixels[xi,yi]) and $FF0000) shr 16;
                      red:=red+250-m*30;
                      green:=green-60+m*8;
                      blue:=blue-60+m*8;
                      if green<0 then green:=0;
                      if blue<0 then blue:=0;
                      if red>255 then red:=255;
                      flashbilder[0,0].Canvas.Pixels[xi,yi]:=TColor(red + (green shl 8) + (blue shl 16));
                    end;
                end;
              end;
             flashbilder[1,m]:=flashbilder[0,0];
          end;
aalso, ich möchte hier versuchen, bilder "flashen" zu lassen, also in einer farbe aufleuchten lassen (hier rot) und dann langsam wieder zur normalfarbe zurückzugehen. in diesem code, welcher zu beginn ausgeführt wird, werden nun die bilder analysiert, die farbwerte verändert und in jeweils 8 bilder, welche dann die animation geben sollen, abgespeichert.

flashbilder[0,0] ist nur ne hilfsvariable, in der das aktuell zu bearbeitende bild zwischengespeichert wird.
und unten wird schließlich in flashbilder[1,m] die bilder abgespeichert, wobei m die einzelnen animationsbilder sind (hier 1-8, unter 0 ist das originalbild gespeichert).

später wird dann in einem timer die animation abgerufen und die bilder nacheinander abgerufen..
jedoch ist dann mein bild dauerhaft komplett rot, was nicht sein sollte..
dann hab ich getestet woran das liegen könnte.. der animationscode im timer ist korrekt, also muss es an den einzelnen bildern liegen. und dann hab ichs zum testen so gemacht, dass wenn das ereignis auftreten soll, anstatt der kompletten animation nur ein bild genommen wird, und zwar flashbilder[1,0], welches ja das originalbild sein sollte.. ist es aber nicht wirklich, da es ebenfalls komplett rot ist, was mich sehr verwundert und verwirrt..
wenn man sich den obigen code ansieht sieht man ja, dass in keinem fall an flashbilder[1,0] rumgespielt wird, also kann es gar nicht rot sein, oder sonstwas.. oder?
das einzige mal, wo flashbilder[1,0] im code vorkommt, is am anfang, wo der "hilfsvariable" eben dieses bild zugeordnet wird, aber sonst ja nichts..

ich hoffe ihr wisst was ich meine und könnt mir vielleicht helfen
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#2

Re: Problem mit Animation / Bearbeiten von Bildern

  Alt 8. Jan 2008, 15:50
1.) Warum verbraetst Du so viele Variablen?
flashbilder[0,1..8] werden nicht verwendet.

2.) Der Algorithmus ist noch nicht das, was Du willst
flashbilder[0,1] wird (bei mir) ganz weiss
Danach von "sehr rot" bis ganz schwarz abgestuft.
Aber dass das flashbilder[0,8] ganz schwarz ist soll wohl auch nicht sein.

Ausgehend von einem gruenen Bild (siehe abbildung) sehen die Ergebnisse entsprechend aus
Miniaturansicht angehängter Grafiken
y3_216.jpg  
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
lacky

Registriert seit: 26. Apr 2007
7 Beiträge
 
#3

Re: Problem mit Animation / Bearbeiten von Bildern

  Alt 8. Jan 2008, 16:26
ja [0,1..8] wird nicht verwendet, aber mein array sieht so aus flashbilder[0..10,0..8], weil ich das ganze mit mehreren bildern machen will(hier 10, werden aber wohl noch mehr)..
die [0,1..8] brauch ich nicht, stimmt, aber den rest ja schon..

hm, das mit den farben funktioniert bei mir eigentlich schon, so wie ich es will.. ich hatte das ganze schonmal so dass es klappt, aber sehr umständlich und dadurch wurde das programm extrem verlangsamt, indem ich die bilder erst direkt im timer, also bei der animation selbst jedesmal neu berechnet hab..
aber das problem bei mir ist ja glaub ich anderes.. aber trotzdem danke, ich werd mal noch etwas rumprobieren, vielleicht auch versuchen das ganze ganz anders zu lösen..

achja, vielleicht ist es bei dir teilweise anders mit den farben, weil in meinem code wird das ganze ja nur ausgeführt, wenn die farbe nicht weiß is(meine transparent-farbe)..


edit:
ok, ich hab jetzt ne lösung gefunden
anscheinend gibts irgendwelche zuweisungsprobleme wenn ich einen befehl in der form benutze:
Code:
flashbilder[1,m]:=flashbilder[0,0];
damit das funktioniert hab ich das jetzt folgendermaßen gelöst:
Code:
flashbilder[0,0].SaveToFile('images\dummy.bmp');
flashbilder[1,m].loadfromfile('images\dummy.bmp');
deletefile('images\dummy.bmp');
ist zwar ein wenig blöd, aber so funktioniert es wenigstens
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#4

Re: Problem mit Animation / Bearbeiten von Bildern

  Alt 8. Jan 2008, 21:59
Stimmt.

Aber mit Verlaub, Dein Code bereitet mir ein wenig Kopfweh.
Hab hier zu Hause kein Delphi, daher untested:

Delphi-Quellcode:

procedure CopySmallBMP(const picSource:TFlashBild; var picTarget:TFlashBild);
var
  yi,xi:integer
begin
  for xi := 1 to 32 do
    for yi := 1 to 32 do
    begin
      picTarget[xi,yi] := picSource[xi,yi];
    end;
end;
Nicht gut, aber besser.
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz