Leinwand ist cool! - Seite 43

 
khorosh:

Warum sollten Sie das tun, Sie haben doch geschrieben, dass Sie überhaupt keinen Zeitplan brauchen).

Für die Schönheit.
 
Реter Konow:

Ich danke Ihnen. Es handelt sich doch nicht um einen mit dem #resource-Befehl komprimierten .bmp-Frame, oder? ))) Definitiv nicht. Es ist ein natürlicher Adapter zum Abspielen einer Gif-Datei auf MQL-Canvas, basierend auf einem portierten .gif-Reader, der in ein paar Stunden geschrieben wurde. Ich muss von außen wie ein Idiot aussehen)))

Yuri, danke für die Demo, aber so etwas kann jeder machen. Einfach.

  1. Nehmen Sie ein einfaches Gif. Nehmen Sie es auf Video auf.
  2. Holen Sie alle Bilder aus dem Video.
  3. Speichern Sie Bilder im .bmp-Format, nummeriert.

  4. Integrieren Sie Frames über #resource in das Skript.

  5. Durchlaufen Sie die Rahmen in einer Endlosschleife und zeigen Sie sie nacheinander auf der Leinwand an.

Als Ergebnis erhalten wir ein Pseudo-Gif, das keinen Bezug zur Standard-Gif-Format-Darstellung in MQL-Programmen hat.

//-----------------------------

Hinzugefügt:

Ich werde sagen, dass ich auch ein "Pseudo-Gif" habe, aber die Technologie ist viel komplexer. Es verfügt über eine Autorenkompression und einen Wiedergabemechanismus. Und das Wichtigste: Die "Pseudo-Gifs" sind an ihre Elemente gebunden und werden aus einem gemeinsamen Array reproduziert. Die Komprimierung funktioniert besser als über die #resource-Direktive, da unveränderliche Farben nicht von Bild zu Bild aufgezeichnet werden.


Welcher Videoeditor kann keine animierten Gifs öffnen? Photoshop öffnet sie und legt die Rahmen in Ebenen ab. Aber es gibt eine noch einfachere Lösung - Online-Service - laden Sie dort animierte Gifs hoch, in einer Minute erhalten Sie einen gezippten Ordner mit den einzelnen Frames.

 
Welchen Sinn hat es, darüber zu streiten, ob es sich um eine portierte Lösung handelt oder nicht? Das Format ist genormt, also muss auch die Art und Weise, wie damit gearbeitet wird, genormt sein und im Übrigen zeitgleich mit der Entwicklung des Formats selbst entwickelt werden.
 
Dateien:
puh.ex5  29 kb
 
Yury Kulikov:

 

Grüße.

Weiß jemand zufällig, warum man keine Linie von 2 Pixeln zeichnen kann? Was für eine Art von Diskriminierung ist das? )

void CCanvas::PolylineThick(const int &x[],const int &y[],const uint clr,const int size,const uint style,ENUM_LINE_END end_style)
  {
   if(size<=2)
     {
      if(size>0)
         PolylineWu(x,y,clr,style);
      return;
     }
...
 
Dick bedeutet "dick" und 2 Pixel sind überhaupt nicht dick.
 
Dmitry Fedoseev:
Dick bedeutet "dick" und 2 Pixel sind überhaupt nicht dick.
Dicker als 1 Pixel )
 
Oleksii Chepurnyi:

Grüße.

Vielleicht weiß jemand, warum man eine Linie nicht mit 2 Pixeln zeichnen kann? Was für eine Art von Diskriminierung ist das? )

Ja, und wenn Sie es durch if(size<2) ersetzen, wird es gezeichnet, aber ungenau:


@Nikolai Semko, gibt es ein Problem mit der Glättung?

 
Andrey Khatimlianskii:

@Nikolai Semko, gibt es hier ein Problem mit Anti-Aliasing?

Diese Funktionen sind furchtbar schlecht geschrieben. Da gibt es verdammt viel aufzuholen. Kein normales Anti-Aliasing, keine normale Handhabung von Farbmischung und Transparenz. Du solltest sie einfach zerknüllen und in den Müll werfen und neue schreiben.
Ich habe hier schon einmal darüber geschrieben.

Auf jeden Fall sollten Sie die reguläre PixelTransform-Funktion durch diese ersetzen:

https://www.mql5.com/ru/forum/1111/page2553#comment_13054823

Ich habe angefangen, meine doppelte Version zu schreiben (bei der alle int-Eingabeparameter doppelt sind), habe sie aber nicht fertiggestellt und ins Regal gestellt. Trotz ihrer scheinbaren Einfachheit ist dies keine einfache Aufgabe. Nun, es ist kein Problem, es genau zu schreiben, das Problem ist, eine sehr hohe Qualität zu schreiben, damit der Algorithmus schnell ist. Mein Hauptproblem ist der Perfektionismus.