Tuval harika! - sayfa 10

 
Реter Konow :

Nikolay'a teşekkürler. Senin fedakarlığını unutmayacağım! :)

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

Bir bmp bit eşleminin basit biçim değiştirmesinin gösterilmesi.

 //+------------------------------------------------------------------+
//|                                                        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;
     }
  }
//+------------------------------------------------------------------+
Büyük bir istek, şuna benzer yorumlar yazmamaktır: Bu, ticareti nasıl etkiler? bu nasıl faydalı olabilir? vb.
Kanvasın olanaklarını gösteren bir konudaki bu tür yorumlar, en azından kişisel olarak, benim tarafımdan amatörlüğün bir tezahürü olarak algılanacaktır.
Dosyalar:
Morph.ZIP  738 kb
 
Nikolai Semko :
Kanvasın olanaklarını gösteren bir konudaki bu tür yorumlar, en azından kişisel olarak, benim tarafımdan amatörlüğün bir tezahürü olarak algılanacaktır.

çok komik

Bir meslekten olmayan olarak sadece onaylayabilirim - harika görünüyor. Ama tüm bunları nereye uygulayacağım - anlamıyorum. Peter 'a Konov ' kulübüne katılın.

 
Nikolai Semko :

Bir bmp bit eşleminin basit biçim değiştirmesinin gösterilmesi.

Büyük bir istek, şuna benzer yorumlar yazmamaktır: Bu, ticareti nasıl etkiler? bu nasıl faydalı olabilir? vb.
Kanvasın olanaklarını gösteren bir konudaki bu tür yorumlar, en azından kişisel olarak, benim tarafımdan amatörlüğün bir tezahürü olarak algılanacaktır.

Hayır, peki, bu geçiş değil. Bir streç ile geçiş diyebilirsiniz:


Genel olarak, gerçek olanı kendim yapmak için çok tembeldim - onu örnek klasörlerinde buldum.

 
Artyom Trishkin :

Hayır, peki, bu geçiş değil. Bir streç ile geçiş diyebilirsiniz:


Genel olarak, gerçek olanı kendim yapmak için çok tembeldim - onu örnek klasörlerinde buldum.

Ama burada, dönüşüm nerede? Tabii ki, bu durumda görevlerimiz için gerekli değil, ama yine de. Wiki'den morph'un tanımı:

Morphing ( İngilizce morphing , transformasyon), bilgisayar animasyonunda bir teknolojidir, bir nesnenin diğerine düzgün bir şekilde dönüştürüldüğü izlenimini veren görsel bir efekttir.

Yine de, ilk örnek bu etkiye daha çok benziyor, IMHO.

 
Andrei Novichkov :

Ama burada, dönüşüm nerede? Tabii ki, bu durumda görevlerimiz için gerekli değil, ama yine de. Wiki'den morph'un tanımı:

Morphing ( İngilizce morphing , transformasyon), bilgisayar animasyonunda bir teknolojidir, bir nesnenin diğerine düzgün bir şekilde dönüştürüldüğü izlenimini veren görsel bir efekttir.

Yine de, ilk örnek bu etkiye daha çok benziyor, IMHO.

İlk örnekte düzgün dönüşüm nerede? İkincisinde, her karede her şey bir biçimden diğerine tamamen sorunsuz bir şekilde dönüştürülür (dönüştürme). Ve ilkinde, sadece zayıflama ve akma ile görüntülerin bir değişikliği. Yüzü bir insandan bir tür hayvana dönüştürmek istedim ama zaman kaybetmedim. Daha önce TV'de çalışmış ve 3D Studio MAX'ta reklamlar yapmış olan ben, dönüşümden bahsetmemeliyim :)

 

Ayrıca Max'te nasıl çalışılacağını da biliyorum)))) Ve sadece onun içinde değil)) Ve televizyonla da çalıştı. Belgelerden biri. kısa süre önce ekran koruyucu yaptığım filmler ödül aldı)

Elbette ilk örneği kelimenin tam anlamıyla biçim değiştirme olarak değerlendirmek saflık olur. Ama Artyom, yine de kızın eteğinin sallanması da pek doğru değil. Dönüşüme kadar değil) Şimdi, eteği mmmmm bir file dönüştüyse, bu başka bir mesele))))))

 
Andrei Novichkov :

Ayrıca Max'te nasıl çalışılacağını da biliyorum)))) Ve sadece onun içinde değil)) Ve televizyonla da çalıştı. Belgelerden biri. kısa süre önce ekran koruyucu yaptığım filmler ödül aldı)

Elbette ilk örneği kelimenin tam anlamıyla biçim değiştirme olarak değerlendirmek saflık olur. Ama Artyom, yine de kızın eteğinin sallanması da pek doğru değil. Dönüşüme kadar değil) Şimdi, eteği mmmmm bir file dönüştüyse, bu başka bir mesele))))))

:)

Ben de öyle dedim - "bir esnemeyle." Ancak, sallanmanın muhtemelen önceden hesaplandığı etekle ilgili değildi (neye bakmadım), ancak boşluğun kendisiyle ilgiliydi - sonuçta, hareketler “Morphing” değiştiricisi de dahil olmak üzere çeşitli şekillerde yapılabilir. , bu tam olarak dönüşecek. Ama muhtemelen iki ayaklıyı oraya taşıyorlar - biliyor, bakmadı.

 
Artyom Trishkin :

:)

Ben de öyle dedim - "bir esnemeyle." Ancak, sallanmanın muhtemelen önceden hesaplandığı etekle ilgili değildi (neye bakmadım), ancak boşluğun kendisiyle ilgiliydi - sonuçta, hareketler “Morphing” değiştiricisi de dahil olmak üzere çeşitli şekillerde yapılabilir. , bu tam olarak dönüşecek. Ama muhtemelen iki ayaklıyı oraya taşıyorlar - biliyor, bakmadı.

Bana öyle geliyor ki o hiç Max değil. Giysi modelleme için bu program nasıl?

Modelin hareketleri, yürüme şekli iyi yapılmış. Belki de kız sensörlerle kaplıydı. Ama ellerin hareketleri, bana öyle geliyor ki, kesinleşmedi ve sanki vücut geliştirmeci cep telefonlarına basacak gibi oldu))

Eh, modelin kendisi yapmak daha güzel olabilir. The Call of Cthulhu'daki bir yamyam gibi.

Kalpten Nafludili))))). Muhtemelen bitirmeye değer.