Deutsch
Quelltexte/ Codesnippets

Animierte Gifs

 

Walter

Habe ausgehend von [...] 
versucht, animierte Gifs ablaufen zu lassen.
Nach einigen Anpassungen hier nun eine gif.inc, die auf der ursprünglichen pic.inc von Martin Pohl basiert.
Damit ist es nun möglich, die Gif einmal oder mehrmals oder auch dauernd ablaufen zu lassen.
V1.1: Zusätzlich ist nun die Größe der Darstellung wählbar
Weitere Verbesserungen sind gerne willkommen!

8 kB
Version:1.1
Hochgeladen:02.12.2018
Ladeanzahl61
Herunterladen
 
02.12.2018  
 




Walter

So, hier noch ein Beispiel für V1.1 - ergänzt um den Modus, der die Größe der Bilddarstellung steuert (plus eine kl. GIF-Datei zum Ausprobieren):

' Beispiel für gif.inc V1.1
' Walter Kowarik
' 6.1.2019
'
declare pfad$,Bild$,WieOft%,Modus%

pfad$=GetDir$("")

$I gif.inc

' Bild laden
Bild$=loadfile$("GIF auswählen",pfad$+"\*.gif")
WieOft%=val(input$("einmal=1, dauernd=0","Wie oft?","0"))

cls
print "Modus: Das Bild wird\n0=in Rahmengröße (ev. verzerrt) dargestellt,\
\n1=unverzerrt in den Rahmen eingepasst,\n2=in der ursprünglicher Bildgröße angezeigt,\
\n3=ein kleines Bild wird in Bildgröße angezeigt, \n ein großes unverzerrt in den Rahmen eingepasst"
Modus%=val(input$("","Modus","3"))

cls
' eventuell bereits angewählte Bildnummer wird vorsichtshalber geschlossen
ClosePic(1)

' Animation wird gestartet
LoadAnim(Bild$,10,10,300,270,%Hwnd,1,WieOft%,Modus%)

waitinput

ClosePic(1)
' oder MCISend$("CLOSE ALL")

29 kB
Version:1.1
Hochgeladen:08.12.2018
Ladeanzahl62
Herunterladen
 
08.12.2018  
 




Walter
Hab eine V1.1 erstellt und darin noch den Modus ergänzt (auch bereits im Download und im Beispiel) wodurch bestimmt wird, wie das Gif-Bild angezeigt wird:

# Ist dieser Parameter 0, so wird das Bild in der von dem Rahmen-Rechteck angegeben Größe gezeigt (und dabei ggf. verzerrt)
# Ist er 1, wird das ursprüngliche Seitenverhältnis beibehalten und das Bild in der Größe so angepasst, dass es unter Beibehaltung des Seitenverhältnisses in das angegebene Rechteck passt
# Ist er 2, wird das Bild unverzerrt in seiner eigenen Größe dargestellt (und somit ggf abgeschnitten)
# Ist er 3, so wird das Bild - sofern es kleiner als der Rahmen ist (zB ein Smiley) - in seiner eigenen Größe dargestellt; ist es größer als der Rahmen, wird es unverzerrt so weit verkleinert, dass es in den Rahmen passt (diesen Modus verwende ich selbst meistens, da ich Smileys anzeige, aber auch andere Bilder, die dann in den Rahmen eingepasst werden).
 
07.01.2019  
 




Manfred
Barei
Hallo Walter,

beim nächsten mal bitte so bei Code einfügen.
Rechts neben Smilies ist ein nach unten gerichteter Pfeil da bitte draufklicken und auf Quelltext gehen.
' Beispiel für gif.inc V1.1
' Walter Kowarik
' 6.1.2019
'
declare pfad$,Bild$,WieOft%,Modus%
pfad$=GetDir$("")
 $I gif.inc
' Bild laden
Bild$=loadfile$("GIF auswählen",pfad$+"\*.gif")
WieOft%=val(input$("einmal=1, dauernd=0","Wie oft?","0"))
cls
print "Modus: Das Bild wird\n0=in Rahmengröße (ev. verzerrt) dargestellt,\
\n1=unverzerrt in den Rahmen eingepasst,\n2=in der ursprünglicher Bildgröße angezeigt,\
\n3=ein kleines Bild wird in Bildgröße angezeigt, \n ein großes unverzerrt in den Rahmen eingepasst"
Modus%=val(input$("","Modus","3"))
cls
' eventuell bereits angewählte Bildnummer wird vorsichtshalber geschlossen
ClosePic(1)
' Animation wird gestartet
LoadAnim(Bild$,10,10,300,270,%Hwnd,1,WieOft%,Modus%)
waitinput
ClosePic(1)
' oder MCISend$("CLOSE ALL")

Gruß
 
XProfan X2
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
09.01.2019  
 




Walter
okay, wusste ich nicht...
 
11.01.2019  
 




p.specht
Als Retro-Rip der GIF.INC für XProfan11.2a-Free als GIF11.INC-Snippet:
Problem: Der Bildlauft stockt In XProfan 11 regelmäßig für 1/2 Sekunde. Hat jemand eine Idee, wie man das flüssiger machen kann?
' ---- GIF11.INC snippet ---------
' based on GIF.INC by Walter Kowarik (c) 2019

Proc LoadAnim

    Parameters MP_Pfad$,MP_X%,MP_Y%,MP_B%,MP_H%,MP_Win%,\
    MP_Num%,MP_Rep%,Modus%
    Declare MP_MCI$, i%,Pic&,Fak!

    if Modus%=0' verzerrt einipassen

    elseif Modus%=1' proportional einpassen

        Pic&=Create("hSizedPic", -1,MP_Pfad$, MP_B%, MP_H%, 1)
        ' skalieren
        Fak!=MP_H%/%bmpy
        MP_H%=MP_H%/Fak!
        DeleteObject Pic&

    elseif Modus%=2' Originalgröße, ev. clipping oder überdecken

        Pic&=Create("hPic", -1,MP_Pfad$)
        MP_B%=%bmpx
        MP_H%=%bmpy
        DeleteObject Pic&

    elseif Modus%=3' wenn <= Rahmen orig. Größe, sonst prop. einpassen

        Pic&=Create("hPic", -1,MP_Pfad$)

        if (MP_H%>=%bmpy) and (MP_B%>=%bmpx)

            MP_B%=%bmpx
            MP_H%=%bmpy

        else

            Fak!=MP_H%/%bmpy
            MP_H%=MP_H%*Fak!
            DeleteObject Pic&

        endif

        DeleteObject Pic&

    endif

    MP_MCI$="OPEN",@Chr$(34);MP_Pfad$;@Chr$(34),"TYPE MPEGVIDEO ALIAS MP_PIC";@Str$(MP_Num%)
    @MCISend$(MP_MCI$)
    MP_MCI$="WINDOW MP_PIC";@Str$(MP_Num%);" HANDLE",@Str$(MP_Win%)
    @MCISend$(MP_MCI$)
    MP_MCI$="WINDOW MP_PIC";@Str$(MP_Num%);" STRETCH"
    @MCISend$(MP_MCI$)
    MP_MCI$="PUT MP_PIC";@Str$(MP_Num%);" DESTINATION AT",@Str$(MP_X%),@Str$(MP_Y%),@Str$(MP_B%),@Str$(MP_H%)
    @MCISend$(MP_MCI$)

    if MP_Rep%=0' Dauernd wiederholen

        MP_MCI$="PLAY MP_PIC";@Str$(MP_Num%);" REPEAT"
        @MCISend$(MP_MCI$)

    else

        MP_MCI$="PLAY MP_PIC";@Str$(MP_Num%); " FROM 0:0:0"

        Whileloop MP_Rep%:i%=&Loop'  Durchlauf sooft hier gewünscht

            @MCISend$(MP_MCI$)
            sleep 2000

        endWhile

    endif

EndProc

Proc ClosePic :parameters MP_Num%

    Declare MP_MCI$
    MP_MCI$="CLOSE MP_PIC";@Str$(MP_Num%)
    @MCISend$(MP_MCI$)

EndProc

' --------------- End of gif11.inc
MAIN:
''''''''  $I gif11.inc  ' Falls gif11.inc als INCLUDE, bitte uncommenten
declare pfad$,Bild$,WieOft%,Modus%
pfad$=GetDir$("@")
Bild$=loadfile$("GIF auswählen",pfad$+"\*.gif")
WieOft%=val(input$("einmal=1, dauernd=0","Wie oft?","0"))
cls
print "Modus: Das Bild wird\n0=in Rahmengröße (ev. verzerrt) dargestellt,"
print "\n 1 = unverzerrt in den Rahmen eingepasst,"
print "\n 2 = in der ursprünglichen Bildgröße angezeigt,"
print "\n 3 = ein kleines Bild wird in Bildgröße angezeigt, ein"
print   "       großes unverzerrt in den Rahmen eingepasst"
Modus%=val(input$("","Modus","3"))
Cls
ClosePic(1)' angewählte Bildnummer vorsichtshalber schließen
LoadAnim(Bild$,10,10,300,270,%Hwnd,1,WieOft%,Modus%)
waitinput
ClosePic(1)
' oder MCISend$("CLOSE ALL")
 
So Computer sind halt auch nur Menschen...
vor 6 Tagen  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.703 Betrachtungen

Unbenanntvor 0 min.
Thomas ZielinskiGestern (11:28)
Roland SchäfferGestern (09:02)
Manfred BareiVorgestern (22:37)
HofKVorgestern (20:25)
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Walter (4x)
p.specht (1x)
Manfred Barei (1x)


AGB  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Impressum  |  Mart  |  Support  |  Suche

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie