![]() |
Animierte Image Button
Falls jemand lust hat kann er das mal testen.
Es geht mir Hauptsächlich darum ob diese auf euren System Flickerfrei laufen. EDIT: Anhang gelöscht.. gruss |
AW: Animierte Image Button
Beim Ausführen der Exe, Diese Meldung:
Zitat:
|
AW: Animierte Image Button
Zitat:
C:\Users\Jonas\AppData\Roaming\BrewIdeas\ProgComma nd\ProgBar Ohne das leerzeichen zwischen dem "a" und "n" wird hier nicht richtig angezeigt warum auch immer. Dort wird dann die INI gespeichert. Seltsam wieder so ein ding das bei mir nicht auftritt. Danke für die Info. gruss |
AW: Animierte Image Button
Zitat:
|
AW: Animierte Image Button
Zitat:
Durch die änderung in meiner LIB habe ich vergessen die erste DIR zu erstellen BrewIdeas daher geht es nicht. Lade gleich ne fixed Version hoch. Danke! gruss |
AW: Animierte Image Button
Zitat:
![]() |
AW: Animierte Image Button
Jo habe ich ja ;)
Delphi-Quellcode:
if not DirectoryExists ....
Nur das bringt mir nichts wenn ich den Pfad im Quelltext nicht erstelle. :duck: Habe es korrigiert und dürfte jetzt laufen. gruss |
AW: Animierte Image Button
Der Unterschied zwischen ForceDirectories und DirectoryExists ist allerdings folgender:
ForceDirectories prüft, ob es das Verzeichnis gibt (wie DirectoryExists) aber versucht auch gleichzeitig die ganzen Verzeichnisse anzulegen, wenn es diese noch nicht gibt. Und nur wenn das nicht funktioniert (warum auch immer) dann liefert es dir ein False zurück. :) |
AW: Animierte Image Button
Zitat:
Könnte mir da im nachhinein einiges an Schreibkram sparen. Frage mich nur warum ich da nicht selbst drauf gekommen bin :) Danke. gruss |
AW: Animierte Image Button
Schade! Dachte eigentlich jemand könnte mir sagen ob die Animationen
flüssig laufen, keine CPU auslasten und die resourcen freigegeben werden. (zumindest was im Taskmanager so sichtbar ist.) Da keine Negativen aussagen gepostet wurden gehe ich davon aus das es in Ordnung zu sein scheint. Was ich wohl noch machen muss ist ein ImageDn zu übergeben. Das erste Frame im Filmstrip ist nicht dafür geeignet da es zur Animations sequenz gehört und schon erhaben ist.(Schatten) gruss |
AW: Animierte Image Button
Also die Animation läuft flüssig, flimmert bei mir allerdings ein wenig.
Scheint auch komplett alles freigegeben zu sein. Win7 x64 |
AW: Animierte Image Button
Zitat:
Glaube das von dir wahrgenommene Flimmern liegt am Filmstrip selbst. Das letzte Frame ist übergangsmäßig nicht synchron genug das erweckt den anschein das es Flimmert. gruss |
AW: Animierte Image Button
Nee, bei mir ist ein kleines weißes aufblitzen zwischen den einzelnen Bildern zu sehen.
Also nicht nur beim Übergang vom letzten zum ersten Bild. |
AW: Animierte Image Button
Zitat:
gruss |
AW: Animierte Image Button
Zitat:
|
AW: Animierte Image Button
:-D Habe das Verzeichnis mal von Hand erstellt.
Also die Icons drehen sich flüssig aber mit leichtem Flackern. Der Schatten wird immer gut angezeigt. Wenn man allerdings auf die Buttons klickt kommt die Animation etwas durcheinander. Vielleicht wäre es gut im OnMouseDown der Buttons die Animation zu pausieren... Verwendest du eigene Styles? Die Form ist eine FM 3D Anwendung? Ist die Animation auf fortlaufend eingestellt? Grüße jonas |
AW: Animierte Image Button
Zitat:
Zitat:
Die Schatten sind also im Bild selbst enthalten. Zitat:
Rechter Mausklick oben im Caption anderes Design auswählen. Zitat:
Die Funktionsweise ist so aufgebaut. Anwendung:
Delphi-Quellcode:
btnAnimVornHinten := CTRL_ImageButtonCreate(MainHandle, PWideChar(SKAERO_FOLDER +
'AnimVH.png'), 16, 28, ID_BTN_ANIMVORNHINTEN, 30); SKAERO_SetAnchorMode(btnAnimVornHinten.Handle, HWND_BOTTOM); SKAERO_SetZorder(btnAnimVornHinten.Handle, HWND_TOP);
Delphi-Quellcode:
DLL Seite:
WM_MOUSEMOVE:
begin case wp of begin SKAERO_SetCTLText(lblToolTips.Handle, 'Vorne/Hinten Umschalten'); Img := SKAERO_GetButImageBackProperty(btnAnimVornHinten.Handle); GDIP_GetImageSize(Img, imgW, imgH); ImgAnimW := imgW div 30; // 30 Bilder/Frames im FilmStrip AnimButton := 0; SetTimer(MainHandle, ANIM_TIMER, 50, nil); end; end; end; WM_TIMER: begin case wp of ANIM_TIMER: begin case AnimButton of 0: btnAnimVornHinten.AnimateButton(btnAnimVornHinten.Handle, ImgAnimW); end; end; end; end;
Delphi-Quellcode:
procedure TSkinImageButton.AnimTimer(Sender: TObject);
var Img: Cardinal; graphics: Cardinal; imgW, imgH: cardinal; DC: HDC; rw : TRect; lp :TPoint; hDCBack: HDC; begin Img := SkinEngine.GetButImageBackProperty(Handle); SkinEngine.GetImageSize(Img, ImgW, ImgH); if Value > integer(ImgW div FFRameWidth) then Value := FFRameWidth; if Value = 0 then Value := FFRameWidth; DC := GetDC(FOwner); hDCBack := CreateCompatibleDC(DC); GetClientRect(Handle, rc); GetWindowRect(Handle, rw); lp.x := rw.Left; lp.y := rw.Top; ScreenToClient(FOwner, lp); SelectObject(hDCBack, SkinEngine.GetBackBitmap(FOwner)); BitBlt(DC, lp.x, lp.y, rc.Right, rc.Bottom, hDCBack, lp.x, lp.y, SRCCOPY); DeleteDC(hDCBack); if GdipCreateFromHDC(DC, graphics) = OK then begin GdipDrawImageRectRectI(Graphics, Img, lp.x, lp.Y, FFRameWidth, ImgH, Value, 0, FFRameWidth, ImgH, 2, nil, False, nil); end; ReleaseDC(FOwner, DC); GdipDeleteGraphics(Graphics); Value := Value + FFRameWidth; FAnimTimer.Enabled := False; end;
Delphi-Quellcode:
Falls hier wieder Typen wie Furtbichler rummeckern wollen.
procedure TSkinImageButton.AnimateButton(WinHandle: HWND; FRameWidth: Integer);
begin FFRameWidth := FRameWidth; FHImageButton := WinHandle; FAnimTimer.Free; FAnimTimer := TTimer.Create(nil); FAnimTimer.Interval := 25; FAnimTimer.OnTimer := AnimTimer; end; Ja es gibt bestimmt besser ansätze das umzusetzen. Habe auch nichts gegen verbesserungs vorschläge. (davon ausgenommen genannter ?Kollege?) Dann verzichte ich doch lieber. :) Neue TestVersion mit Initialisierungs, späteres ImageDown Image hochgeladen. Als nächstes muss ich erstmal ne "transparente EDIT" programmieren. gruss |
AW: Animierte Image Button
Die Animationen starten irgendwie nicht an der korrekten Position. Da ist ein leichtes Springen drin, wenn ich mit der Maus über ein Toolbar-Icon fahre. Ansonsten schauts doch ganz gut aus :thumb:
|
AW: Animierte Image Button
Wer sehen will was das teil später mal tut kann sich ja meine Hilfe Datei anschauen.
Das Programm habe ich mal in VB geschrieben (1999) und setze es jetzt nach Delphi um. Leider hat die *.chm kleine Skriptfehler so das man nicht mehr alles lesen kann. Wenn man also unter Programm/ProgBar im linken Reiter klickt anschließend auf das Image auf der aktualisierten seite funtioniert dann auf der darauf folgenden Seite nur der Eintrag 6. Konfigurieren der Knöpfe. Anhang gelöscht.. gruss |
AW: Animierte Image Button
Zitat:
Nach einen MouseMove wird dieses Visible False geschaltet. Die Animation die dann sichtbar geschaltet wird bekommt dann automatisch den Focus da die Maus sich ja noch an der gleichen position befindet. Das erste Frame im Strip hat dann einen Schatten so das es aussieht als wenn das Image angehoben würde. Ist es das was du meinst? Eigentlich sollte schon immer zuerst dieses sichtbar werden. Beim letzten Bild im Strip habe ich ein synchronisierungs problem vom letzten zum ersten das verursacht eine kleine Unregelmäßigkeit. Ich glaube hier liegt wieder mal ein Timing problem vor. Danke für deine Infos. gruss |
AW: Animierte Image Button
Nochmal ein kleines Update..
Danke für das Testen Müßte jetzt eigentlich in Ordnung sein. Ein paar Skins addiert deshalb etwas größer. gruss |
AW: Animierte Image Button
Das sieht ganz gut aus, allerdings fallen immer noch 2 Dinge auf:
- das Flackern beim "Zurückspulen" auf den ersten Frame ist immer noch vorhanden - ein Bewegen der Maus hält die Animation an (das dürfte am Timer liegen) Sofern das einmal etwas Größeres werden soll, könnte man evtl. einen Thread in Betracht ziehen, oder? Damit sollte zumindest der 2. Punkt keine Rolle mehr spielen. |
AW: Animierte Image Button
Zitat:
Ist ja ein teil meiner SkinEngine "ImageButton" erweitert von daher kann es immer mal wieder vorkommen das ich etwas in dieser art verwenden möchte. Zitat:
OK werde den Anhang wieder löschen.. Später geht es ja nicht mehr. gruss |
AW: Animierte Image Button
Zitat:
Detlef .. aber ohne Thread :oops: Die Tranparente Edit ist noch nicht fertig. Da fehlen noch Messagen. ContexMenu, Texteingabe usw.. Die Subclass verweigert mir den zugriff darauf. Werde wohl alle diese Funktionen noch selbst implementieren müssen. gruss |
AW: Animierte Image Button
Japp, das ist viel besser. Ob mit oder ohne Thread bleibt letztlich Dir überlassen, das war nur ein Vorschlag. Ich will ja niemandem vorschreiben, wie er was zu programmieren hat.
|
AW: Animierte Image Button
Gerade mal ausprobiert:
- Flackern ist ab und an noch zu sehen. - Bei Klick-Halten auf einen der Buttons, Stopp der Animation. (Ich denke mal der Strobo-Effekt beim Klick ist gewollt) (Win7 32bit) |
AW: Animierte Image Button
Zitat:
Die Animation selbst kann ja variabel programmiert werden. Ich aktiviere die Animation bei WM_MOUSEMOVE Alternativ könnte man auch so vorgehen das man im MouseMove Event das erste Frame im Strip anzeigt. Und im MouseDown ereignis anschließend die Animation startet welche dann einmal das strip durchläuft Es ging mir mal um die grundfunkionen wo ich sehen wollte ob die auch wo anders gut laufen. Zitat:
Das wird jetzt einfach durch ne Variable unterbunden.
Delphi-Quellcode:
TimerEvent war Ok..
ID_BTN_ANIMNEWPROGBAR:
begin if not (AnimButton = 1) then begin SKAERO_SetCTLText(lblToolTips.Handle, 'Neue ProgBar erstellen'); Img := SKAERO_GetButImageBackProperty(btnAnimNewProgBar.Handle); GDIP_GetImageSize(Img, imgW, imgH); ImgAnimW := imgW div 31; AnimButton := 1; SetTimer(MainHandle, ANIM_TIMER, 50, nil); end; end; Dann ist das erstmal so Ok.. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz