Leinwand ist cool! - Seite 10

 
Реter Konow:

Vielen Dank, Nicholas. Ich werde dein Opfer nicht vergessen! :)

Du hast mich geneckt :)))
 
Easy Canvas
Easy Canvas
  • www.mql5.com
Данная библиотека и класс iCanvas упростит написание программ с применением Canvas. Вот пример простого индикатора с применением данной библиотеки и его демонстрация. Обратите внимание, что в данном примере в теле индикатора отсутствует функция обработки событий OnChartEvent. Но она также может и присутствовать. Особенности данной библиотеки...
 

Demonstration eines einfachen bmp-Rasterbild-Morphings.

//+------------------------------------------------------------------+
//|                                                        Morph.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                         https://www.mql5.com/ru/users/nikolay7ko |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Nikolay Semko"
#property link      "https://www.mql5.com/ru/users/nikolay7ko"
#property link      "SemkoNV@bk.ru"  
#property version   "1.01"
#property indicator_chart_window
#define protected public
#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164
#undef protected
#resource  "\\Images\\wave02.bmp"
#resource  "\\Images\\stone2.bmp"

input int MorphPeriod=3000; // период морфинга в миллисекундах 

string bmp1="::Images\\wave02.bmp";
string bmp2="::Images\\stone2.bmp";
int width_bmp1,height_bmp1;
int width_bmp2,height_bmp2;
uint BMP1[],BMP2[],scr1[],scr2[];
int N;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   ChartSetInteger(0,CHART_FOREGROUND,true);
   if(!ResourceReadImage(bmp1,BMP1,width_bmp1,height_bmp1)) Print("Error read resource: ",GetLastError()); //  bmp file to array BMP1[]
   if(!ResourceReadImage(bmp2,BMP2,width_bmp2,height_bmp2)) Print("Error read resource: ",GetLastError()); //  bmp file to array BMP2[]
   ResourceFree(bmp1);
   ResourceFree(bmp2);
   BackGraundBmp(BMP1,Canvas,width_bmp1,height_bmp1);
   ArrayCopy(scr1,Canvas.m_pixels);
   BackGraundBmp(BMP2,Canvas,width_bmp2,height_bmp2);
   ArrayCopy(scr2,Canvas.m_pixels);
   EventSetMillisecondTimer(30);
   N=MorphPeriod/32;
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   static long j=0;
   static int w=Canvas.m_width;
   static int h=Canvas.m_height;
   if(w!=Canvas.m_width || h!=Canvas.m_height) // если изменился размер окна, то перерисовываем фон
     {
      BackGraundBmp(BMP1,Canvas,width_bmp1,height_bmp1);
      ArrayCopy(scr1,Canvas.m_pixels);
      BackGraundBmp(BMP2,Canvas,width_bmp2,height_bmp2);
      ArrayCopy(scr2,Canvas.m_pixels);
      w=Canvas.m_width;
      h=Canvas.m_height;
     }
   long k=j%(2*N);
   k=(k<N)?k:(2*N-1-k);
   Morph(Canvas,scr1,scr2,k/double(N));
   Canvas.Update();
   j++;
  }
//+------------------------------------------------------------------+
void BackGraundBmp(uint &arr[],iCanvas &C,int &w,int &h)
  {
   int SizeArr=w*h;
   int pos=0,posBMP=0;
   int len=(C.m_width<w)?C.m_width:w;
   while(pos<(C.m_width*C.m_height))
     {
      int X=0;
      while(X<C.m_width)
        {
         int Len=C.m_width-X;
         if(Len>len) Len=len;
         ArrayCopy(C.m_pixels,arr,pos+X,posBMP,Len);
         X+=len;
        }
      pos+=C.m_width;
      posBMP+=w;
      if(posBMP>=SizeArr) posBMP=0;
     }
  }
//+------------------------------------------------------------------+

void Morph(iCanvas &C,uint &arr1[],uint &arr2[],double p) // p  - 0..1, размеры массивов arr1, arr2 и m_pixels должны быть одинаковые
  {
   argb pix,pix1,pix2;
   int size=ArraySize(Canvas.m_pixels);
   for(int i=0; i<size;i++)
     {
      pix1.clr=arr1[i];
      pix2.clr=arr2[i];
      pix.c[0]=pix1.c[0]+(uchar)Round(((int)pix2.c[0]-(int)pix1.c[0])*p);
      pix.c[1]=pix1.c[1]+(uchar)Round(((int)pix2.c[1]-(int)pix1.c[1])*p);
      pix.c[2]=pix1.c[2]+(uchar)Round(((int)pix2.c[2]-(int)pix1.c[2])*p);
      pix.c[3]=255;
      C.m_pixels[i]=pix.clr;
     }
  }
//+------------------------------------------------------------------+
Bitte schreiben Sie keine Kommentare wie: Wie wirkt es sich auf den Handel aus? Wie kann es nützlich sein? usw.
Solche Kommentare in der Branche, die die Fähigkeiten von Kanvas, ich persönlich, zumindest, wird als eine Manifestation der Unprofessionalität wahrgenommen werden demonstriert.
Dateien:
Morph.ZIP  738 kb
 
Nikolai Semko:
Solche Kommentare in einem Thread, in dem die Fähigkeiten von Kanvas demonstriert werden, würde ich persönlich zumindest als Ausdruck von Unprofessionalität empfinden.

LOL

Ich als Laie kann nur bestätigen, dass es toll aussieht, aber ich weiß nicht, wo ich das alles anwenden soll. Treten wir dem Club von Peter Konov bei.

 
Nikolai Semko:

Demonstration eines einfachen bmp-Rasterbild-Morphings.

Bitte schreiben Sie keine Kommentare wie: wie wirkt sich das auf den Handel aus? wie kann es nützlich sein? usw.
Diese Art von Kommentaren in einer Branche, die die Fähigkeiten von Kanvas demonstriert, wird von mir persönlich zumindest als Ausdruck von Unprofessionalität wahrgenommen werden.

Nein, das ist kein Morphing. Morphing ist eine Übertreibung, wenn man es als Morphing bezeichnet:


Im Allgemeinen war ich zu faul, um selbst einen echten zu erstellen - ich habe Beispiele in den Ordnern gefunden.

 
Artyom Trishkin:

Nein, das ist kein Morphing. Es ist etwas weit hergeholt, dies als Morphing zu bezeichnen:


Eigentlich war ich zu faul, selbst eine echte zu erstellen - ich habe sie in den Beispielordnern gefunden.

Wo ist hier das Morphing? Natürlich ist das in diesem Fall für unsere Zwecke nicht entscheidend, aber dennoch. Wiki-Definition von Morphing:

Morphingist eine Technologie in der Computeranimation, ein visueller Effekt, der den Eindruck einer sanften Umwandlung eines Objekts in ein anderes erweckt.

Das erste Beispiel entspricht jedoch eher diesem Effekt.

 
Andrei Novichkov:

Wo ist hier das Morphing? Natürlich ist das für unsere Zwecke hier nicht entscheidend, aber dennoch. Wiki-Definition von Morphing:

Morphingist eine Technologie in der Computeranimation, ein visueller Effekt, der den Eindruck einer sanften Umwandlung eines Objekts in ein anderes erzeugt.

Das erste Beispiel ähnelt diesem Effekt meiner Meinung nach mehr.

Wo im ersten Beispiel für eine glatte Transformation? Bei der zweiten wird alles in jedem Bild völlig fließend von einer Form in eine andere verwandelt (Morphing). Und im ersten Fall handelt es sich nur um einen Bildwechsel mit Verblassen und Anschwellen. Ich wollte mich von einem Menschen in eine Art Bestie verwandeln, aber ich wollte meine Zeit nicht verschwenden. Ich, der ich früher beim Fernsehen gearbeitet und Werbespots in 3D Studio MAX gemacht habe, sollte keine Ahnung von Morphing haben :)

 

Und ich weiß auch, wie man in Max arbeitet )))) Und nicht nur darin )) Und ich habe auch mit dem Fernsehen gearbeitet. Einer der Dokumentarfilme, für den ich einen Startbildschirm gestaltet habe, hat vor kurzem einen Preis gewonnen).

Natürlich wäre es naiv, das erste Beispiel als Morphing im vollen Sinne des Wortes zu betrachten. Aber Artem, den Rock eines Mädchens zu kräuseln, ist nicht ganz dasselbe. Nicht vor der Verwandlung ) Wenn sich nur ihr Rock in einen Elefanten verwandeln würde, wäre das etwas anderes )))))).

 
Andrei Novichkov:

Und ich weiß auch, wie man in Max arbeitet )))) Und nicht nur darin )) Und ich habe auch mit dem Fernsehen gearbeitet. Einer der Dokumentarfilme, für den ich ein Drehbuch geschrieben habe, hat vor nicht allzu langer Zeit einen Preis gewonnen))

Natürlich wäre es naiv, das erste Beispiel als Morphing im vollen Sinne des Wortes zu betrachten. Aber Artem, den Rock eines Mädchens zu kräuseln, ist nicht ganz dasselbe. Nicht vor der Verwandlung ) Wenn sich ihr Rock nur in einen Elefanten verwandeln würde, wäre das eine andere Sache )))))).

:)

Das habe ich auch gesagt, ein bisschen weit hergeholt. Aber ich habe nicht vom Rock gesprochen, bei dem das Kräuseln wahrscheinlich schon vorberechnet ist (ich habe nicht nachgeschaut), sondern von der Puppe selbst - man kann sie auf verschiedene Arten bewegen, auch mit dem Modifikator "Morphing", was einfach nur ein Morphing wäre. Aber wahrscheinlich bewegen sie die Zweibeiner - ich weiß es nicht, ich habe nicht nachgeschaut.

 
Artyom Trishkin:

:)

Das habe ich auch gesagt, ein bisschen weit hergeholt. Aber ich sprach nicht vom Rock, bei dem das Wackeln wahrscheinlich schon vorberechnet ist (ich habe nicht nachgeschaut), sondern von der Puppe selbst - man kann sie auf verschiedene Arten bewegen, auch mit dem Modifikator "Morphing", was einfach nur ein Morphing wäre. Aber wahrscheinlich bewegen sie die Zweibeiner - ich weiß es nicht, ich habe nicht nachgeschaut.

Ich glaube nicht, dass es Max ist. Wie funktioniert diese Software zur Modellierung von Kleidung?

Die Bewegungen des Modells sind gut, die Art, wie sie geht. Vielleicht ist es nur ein Mädchen, das mit Sensoren übersät ist. Aber die Bewegungen der Arme, so scheint es mir, nicht fertig, und es stellte sich heraus, als ob der Bodybuilder geht, um eine mobile abstoßen)).

Das Modell selbst könnte ein bisschen besser aussehen. Das ist eine Art Kannibale aus "Call of Cthulhu".

Laut und deutlich )))). Vielleicht sollten wir die Sache abschließen.