Image flackern

Von: , Frage gestellt am So, 15. Okt 2006

Mahlzeit

hab mal wieder ein problem.
und zwar ist es so das ich auf meiner form ca 10 image habe.
dazu kommen noch einpaar timer.
mein problem liegt darin das die image flackern sobald einige
timer laufen. also immer dann wenn ein timer gestartet wird.
es ist allerdings egal wieviel timer laufen.
und es ist bei 2 von 10 forms nicht so.
irgendwie komisch.
kennt jemand das problem auch oder kann mir so helfen???

mfg fressbrett

12 Antworten zu dieser Frage

  1. Antwort von nach 28 Minuten 0 hilfreich
    Re: Image flackern

    Hallo fressbrett,

    die Images flimmern eigentlich nur, wenn das Bild neu geladen wird oder Du das Image bewegst. Das ist beim Image auch nicht zu verhindern.
    Ich nehme an, Du hast ein Image statt ein Picture genommen, weil Du Teile transparent darstellen willst. Ich habe ein OCX für ein Picture, mit dem Du Bilder mit transparentem Hintergrund flimmerfrei (auch zur Laufzeit mit der Maus) verschieben kannst. Ich kann Dir ein Beispielprogramm mailen, das bei der Installation das OCX bei Dir registriert.

    Gruß, Rainer

    • Antwort von nach 21 Stunden 0 hilfreich
      Re^2: Image flackern

      danke für eure antworten nur leider helfen sie mir nicht ganz.
      da ich
      1. kein refreshs habe und es ja auch
      komischer weise nicht bei allen forms ist.
      die form wo die meisten timer laufen flimmert z.b. nicht.

      und 2. hab ich image gewählt weil ich da die funktion "stretch" habe.

      seidem ich meine buttons auf image umgestellt habe stürzt auch dauernd mein vb ab wenn ich das programm dadrüber starte.
      wobei ich net weiß ob das zusammen hängt.

      • Antwort von nach 21 Stunden 0 hilfreich
        Re^3: Image flackern

        kleiner nachtrag:
        hab den timer gefunden der das ganze verursacht.

        Private Sub Timer200_Timer()
        Label100.Caption = Format(Now, "hh:mm:ss")
        Label200.Caption = Format(Now, "dd.mm.yy")
        End Sub

        der hat ne interval von 500 hab ihn schon auf 1000 gesetzt aber
        da hat sich nix geändert außer den flimmern abständen.

        • Antwort von nach einem Tag 0 hilfreich
          Re^4: Image flackern

          Hallo,
          ich möchte auch mal schreiben:
          Jedes Mal wenn Du die Uhrzeit aktualisierst machst Du einen Refresh.
          Jedes Mal wenn Du die Formgröße änderst machst Du einen Refresh.
          Ist es vielleicht möglich, daß Du unter diesen Bedingungen die Images kurzzeitig unsichtbar machst und danach wieder sichtbar ?
          Ich habe mit so einem Trick beim Grid-Füllen SuperErfolge gehabt ...

        • Antwort von nach einem Tag 0 hilfreich
          Re^4: Image flackern

          Hallo, hab den timer gefunden der das ganze verursacht.

          Private Sub Timer200_Timer()
          Label100.Caption = Format(Now, "hh:mm:ss")
          Label200.Caption = Format(Now, "dd.mm.yy")
          End Sub

          der hat ne interval von 500 hab ihn schon auf 1000 gesetzt
          aber
          da hat sich nix geändert außer den flimmern abständen.
          hmmm, falsch ist daran aber nichts. Eventuell hat Der einfach nur zu viel zu tun, weil Dein Programm so umfangreich ist. Mein einziger Gedanke wäre, ihn etwas zu entlasten. Versuch doch mal ...

          Private Sub Timer200_Timer()
          Label100.Caption = Format(Time, "hh:mm:ss")
          Label200.Caption = Format(Date, "dd.mm.yy")
          End Sub

          ... dann muß nicht erst Datum oder Zeit aus Now gesucht werden, mit Glück geht das schneller.

          Eine Frage zu 'Label200'. Verwendest Du keine Steuerelemente Felder? Bei so großen Projekten ist das notwendig, Du verschleuderst Resourcen! Es würde mich nicht wundern, wenn das die eigentliche Ursache für Dein Problem ist.

          Statt ...

          Label1
          Label2
          Label3

          ... würde bei mir da stehen:

          Label1(1)
          Label1(2)
          Label1(3)

          Dann siehst Du immer noch drei Label, aber es werden viel weniger Resourcen verbraucht. Ein Textfeld ist z.B. fast so groß, wie ein ganzes Notepad.

          Text1
          Text2

          Ist dann etwa so, als würdest Du Notepad zwei mal starten.

          Text1(1)
          Text1(2)

          Ist aber nur ein Notepad mit zwei offenen Dokumenten, das ist sehr viel sparsamer.

          Weil Du für den Index auch viel leichter Variablen verwalten kannst, wird das Programm davon meist auch schneller und kürzer.

          Beim Timer ist das etwas anderes, die würde ich nicht indizieren.

          Gruß, Rainer

          • Antwort von nach einem Tag 0 hilfreich
            Re^5: Image flackern

            also das "now" hab ich schon entfernd aber leider keine verbesserung.
            mal ne kleine erklärung.
            ich habe 7 forms die jeweils links

            -eine lautstärkenregelung
            -7 menü buttons
            -oben eine leiste wo time und date wiedergegeben werden.

            bei zwei forms ist alles in ordnung nur bei den anderen fünf
            fangen alle images an zu flackern sobald ich zb die lautstärke
            verändere oder aber ein image ändere. aber wieso flimmern dann alle?

            die ganzen sachen zu indizieren wäre nun ein riesen aufwand.
            vondaher möchte ich davon erstmal absehen genau so wie alle
            images gegen picture zu erneuern.
            ich verzweifel hier bald.
            gerade die forms die nix wirklich zu tun haben flimmern.

            • Antwort von nach 2 Tagen 0 hilfreich
              Re^6: Image flackern

              Hallo, ich habe 7 forms die jeweils links ...
              das klingt so, als hättest Du sieben Formen, die gleich aussehen und die selbe Funktion haben. Warum nimmst Du nicht eine Form und lädtst die so oft, wie Du sie brauchst? Wie das genau geht, hat Anno neulich erklärt ...
              http://www.wer-weiss-was.de/cgi-bin/forum/showarchiv...

              So ein Problem wie Du es gerade hast, habe ich noch nicht gesehen, ich muß raten, wo die Ursache liegen könnte. Offensichtlich hast du aber wenigstens 100 mal so viele Steuerelemente wie nötig verwendet und ich könnte mir vorstellen, daß das Deine Probleme verursacht.

              Erzähl doch mal, was das Programm tun soll. Schreibst Du auch einen Chat (oder etwas ICQ-Ähnliches)? Frag mal Anno, der hat seinen schon fertig (glaub ich), bei dem ist das eher eine Vodeokonferenz geworden. :-)

              Gruß, Rainer

            • Antwort von nach 2 Tagen 0 hilfreich
              Re^6: Image flackern

              Hallo Fressbrett,

              hoffentlich hast du aus deinen Fehlern gelernt und begehst sie nicht nochmal *zwinker* Nun aber mal zu deinem Problem. Woher weisst du das es ausgerechnet der Timer ist? hast du ihn mal deaktiviert= Flimmert es da auch noch? Wenn nein dann lieht es daran.

              Abhilfe dagegen zu schaffen ist rel. Simple. Aber deiner Menge an Steuercontrolen muss man schon etwas tricksen, damit net soviel schreiben muss.

              Mir fehlt gerade etwas die Zeit. Aber probiere mal folgendes. Wenn es an dem Timer liegt. Dann schreibe mal bevor du die Zuweisung an die Labels machst. Folgendes

              Call Frost(True,Me)
              


              und nachdem du die Daten an die 2 labels zugewiesen hast, dann wieder

              Call Frost(False,Me)
              


              Nun schreibe dir Fix eine eine Sub Fost mit foldenden Inhalt. Am besten in ein Modul packen ;)

              Option explicit
              Private Declare Function LockWindowUpdate Lib "user32.dll" ( _
              ByVal hwndLock As Long) As Long
              Public Sub Frost(Einfrieren as Boolean, F as Form)
              Dim Hwnd as Long
              Dim c as Control
              For each c in F
              if typeof c is Image then
              'Ein Image wurden gefunden
              'Zugreifen kannst du mittels c auf das Element
              ' Hier das Hwnd ermitteln. Musst mal schauen wie man das am besten ' 'machen kann. Aus dem Stehgreif faellt mir nichts ein. 
              ' Das Handle des Image an Hwnd zuweisen
              if Einfrieren then   
              LockWindowUpdate(Hwnd)
              else
              LockWindowUpdate(&0)
              end if
              next
              End Sub 
              


              Sinn ist es alle Images einzufrieren für den Moment der aktualisierung ;)

              MfG Alex

            • Antwort von nach 2 Tagen 1 hilfreich
              Re^7: Image flackern

              Hallo Fressbrett,

              habe gerade eine noch simplere Lösung gefunden ;) Obs klappt weiss ich net, aber das wurde mir mal gesagt.

              Probiere mal folgendes. Setze auf die Form das Control Mediaplayer 10!
              Weisse ihm ein Bild zu. Mache das Control so klein das es man net mehr sieht. Starte dann mal dein Project. Das Flackern sollte nun weg sein *zwinker* Ist net scheen die Variante aber geht. Wurde mir zumindest mal gesagt und ein versuch allemal wert :)

              MfG Alex



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!