![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 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