Данная библиотека и класс iCanvas упростит написание программ с применением Canvas. Вот пример простого индикатора с применением данной библиотеки и его демонстрация. Обратите внимание, что в данном примере в теле индикатора отсутствует функция обработки событий OnChartEvent. Но она также может и присутствовать. Особенности данной библиотеки...
//+------------------------------------------------------------------+//| 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 protectedpublic#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164#undef protected#resource "\\Images\\wave02.bmp"#resource "\\Images\\stone2.bmp"inputint 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;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnInit()
{
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);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constint begin,
constdouble &price[])
{
return(rates_total);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnTimer()
{
staticlong j=0;
staticint w=Canvas.m_width;
staticint 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;
}
}
//+------------------------------------------------------------------+
Большая просьба не писать комментарии что-то вроде: как это влияет на торговлю? как это может пригодиться? и т.д. Подобные комментарии в ветке, где демонстрируются возможности канваса, лично мной по меньшей мере будут восприниматься, как проявление непрофессионализма.
Nikolai Semko: Подобные комментарии в ветке, где демонстрируются возможности канваса, лично мной по меньшей мере будут восприниматься, как проявление непрофессионализма.
LOL
Я, как непрофессионал, лишь могу подтвердить - выглядит здорово. Но, куда все это применить - мне непонятно. Вступаем в клуб Peter'a Konov'a.
Большая просьба не писать комментарии что-то вроде: как это влияет на торговлю? как это может пригодиться? и т.д. Подобные комментарии в ветке, где демонстрируются возможности канваса, лично мной по меньшей мере будут восприниматься, как проявление непрофессионализма.
Не, ну это не морфинг. Морфингом с натяжкой можно это назвать:
А вообще, лень было делать самому настоящий - нашёл в папках примеров.
Не, ну это не морфинг. Морфингом с натяжкой можно это назвать:
А вообще, лень было делать самому настоящий - нашёл в папках примеров.
А вот здесь то где морфинг? Оно, конечно, в данном случае не принципиально для наших задач, но все таки. Определение морфинга из Вики:
Морфинг (англ.morphing, трансформация) — технология в компьютерной анимации, визуальный эффект, создающий впечатление плавной трансформации одного объекта в другой.
Все таки первый пример в большей степени похож на данный эффект, имхо.
А вот здесь то где морфинг? Оно, конечно, в данном случае не принципиально для наших задач, но все таки. Определение морфинга из Вики:
Морфинг (англ.morphing, трансформация) — технология в компьютерной анимации, визуальный эффект, создающий впечатление плавной трансформации одного объекта в другой.
Все таки первый пример в большей степени похож на данный эффект, имхо.
Где в первом примере плавная трансформация? Во втором как раз всё полностью плавно трансформируется в каждом кадре из одной формы в другую (морфинг). А в первом просто смена изображений с затуханием и наплывом. Хотел сделать сам морфинг лица из человеческого в какого-нибудь зверя, но не стал время тратить. Уж мне-то, ранее работавшему на тв, и делавшему рекламные ролики в 3D Studio MAX не стоит рассказывать про морфинг :)
А я тоже умею работать в Максе )))) И не только в нем )) И тоже работавшему с телевидением. Один из докум. фильмов, к которому я делал заставку не давно премию получил )
Конечно, наивно было бы считать первый пример морфингом в полном понимании этого слова. Но Артем, все таки колыхание юбки у девушки тоже не совсем то. Не до морфинг ) Вот если бы юбка у нее превращалась ммммм в слона, вот это другое дело ))))))
А я тоже умею работать в Максе )))) И не только в нем )) И тоже работавшему с телевидением. Один из докум. фильмов, к которому я делал заставку не давно премию получил )
Конечно, наивно было бы считать первый пример морфингом в полном понимании этого слова. Но Артем, все таки колыхание юбки у девушки тоже не совсем то. Не до морфинг ) Вот если бы юбка у нее превращалась ммммм в слона, вот это другое дело ))))))
:)
Так я и сказал - "с натяжкой". Но речь-то не о юбке шла, где колыхание наверняка уже просчитано заранее (не глядел чем), а о самой болванке - ведь движения можно делать различными способами, в том числе и модификатором "Морфинг", что и будет именно морфингом. Но там наверное бипедом двигают - фигзнает, не глядел.
Так я и сказал - "с натяжкой". Но речь-то не о юбке шла, где колыхание наверняка уже просчитано заранее (не глядел чем), а о самой болванке - ведь движения можно делать различными способами, в том числе и модификатором "Морфинг", что и будет именно морфингом. Но там наверное бипедом двигают - фигзнает, не глядел.
Мне че та вообще сдается, что это не Макс. Как там эта прога для моделирования одежды?
Движения модели сделали хорошо, то, как она идет. Может и просто девочку датчиками облепили. А вот движения руками, как мне кажется, не доработали и получилось, как будто культурист идет мобилы отжимать ))
Ну и саму модель можно было бы посимпатичнее сделать. Это же какой то каннибал из "Зова Ктулху".
Нафлудили от души )))). Наверное заканчивать стоит.
Спасибо, Николай. Я не забуду твоей жертвы! :)
Демонстрация простого морфинга bmp-растрового изображения.

Большая просьба не писать комментарии что-то вроде: как это влияет на торговлю? как это может пригодиться? и т.д.Подобные комментарии в ветке, где демонстрируются возможности канваса, лично мной по меньшей мере будут восприниматься, как проявление непрофессионализма.
Подобные комментарии в ветке, где демонстрируются возможности канваса, лично мной по меньшей мере будут восприниматься, как проявление непрофессионализма.
LOL
Я, как непрофессионал, лишь могу подтвердить - выглядит здорово. Но, куда все это применить - мне непонятно. Вступаем в клуб Peter'a Konov'a.
Демонстрация простого морфинг bmp-растрового изображения.
Большая просьба не писать комментарии что-то вроде: как это влияет на торговлю? как это может пригодиться? и т.д.Подобные комментарии в ветке, где демонстрируются возможности канваса, лично мной по меньшей мере будут восприниматься, как проявление непрофессионализма.
Не, ну это не морфинг. Морфингом с натяжкой можно это назвать:
А вообще, лень было делать самому настоящий - нашёл в папках примеров.
Не, ну это не морфинг. Морфингом с натяжкой можно это назвать:
А вообще, лень было делать самому настоящий - нашёл в папках примеров.
А вот здесь то где морфинг? Оно, конечно, в данном случае не принципиально для наших задач, но все таки. Определение морфинга из Вики:
Морфинг (англ. morphing, трансформация) — технология в компьютерной анимации, визуальный эффект, создающий впечатление плавной трансформации одного объекта в другой.
Все таки первый пример в большей степени похож на данный эффект, имхо.
А вот здесь то где морфинг? Оно, конечно, в данном случае не принципиально для наших задач, но все таки. Определение морфинга из Вики:
Морфинг (англ. morphing, трансформация) — технология в компьютерной анимации, визуальный эффект, создающий впечатление плавной трансформации одного объекта в другой.
Все таки первый пример в большей степени похож на данный эффект, имхо.
Где в первом примере плавная трансформация? Во втором как раз всё полностью плавно трансформируется в каждом кадре из одной формы в другую (морфинг). А в первом просто смена изображений с затуханием и наплывом. Хотел сделать сам морфинг лица из человеческого в какого-нибудь зверя, но не стал время тратить. Уж мне-то, ранее работавшему на тв, и делавшему рекламные ролики в 3D Studio MAX не стоит рассказывать про морфинг :)
А я тоже умею работать в Максе )))) И не только в нем )) И тоже работавшему с телевидением. Один из докум. фильмов, к которому я делал заставку не давно премию получил )
Конечно, наивно было бы считать первый пример морфингом в полном понимании этого слова. Но Артем, все таки колыхание юбки у девушки тоже не совсем то. Не до морфинг ) Вот если бы юбка у нее превращалась ммммм в слона, вот это другое дело ))))))
А я тоже умею работать в Максе )))) И не только в нем )) И тоже работавшему с телевидением. Один из докум. фильмов, к которому я делал заставку не давно премию получил )
Конечно, наивно было бы считать первый пример морфингом в полном понимании этого слова. Но Артем, все таки колыхание юбки у девушки тоже не совсем то. Не до морфинг ) Вот если бы юбка у нее превращалась ммммм в слона, вот это другое дело ))))))
:)
Так я и сказал - "с натяжкой". Но речь-то не о юбке шла, где колыхание наверняка уже просчитано заранее (не глядел чем), а о самой болванке - ведь движения можно делать различными способами, в том числе и модификатором "Морфинг", что и будет именно морфингом. Но там наверное бипедом двигают - фигзнает, не глядел.
:)
Так я и сказал - "с натяжкой". Но речь-то не о юбке шла, где колыхание наверняка уже просчитано заранее (не глядел чем), а о самой болванке - ведь движения можно делать различными способами, в том числе и модификатором "Морфинг", что и будет именно морфингом. Но там наверное бипедом двигают - фигзнает, не глядел.
Мне че та вообще сдается, что это не Макс. Как там эта прога для моделирования одежды?
Движения модели сделали хорошо, то, как она идет. Может и просто девочку датчиками облепили. А вот движения руками, как мне кажется, не доработали и получилось, как будто культурист идет мобилы отжимать ))
Ну и саму модель можно было бы посимпатичнее сделать. Это же какой то каннибал из "Зова Ктулху".
Нафлудили от души )))). Наверное заканчивать стоит.