"Görselleştirin! R dilinin plot fonksiyonuna benzer MQL5 grafik kütüphanesi" makalesi için tartışma - sayfa 4

 
Roman Konopelko:

İyi günler, grafiği tam olarak nasıl yeniden çizmeye çalıştınız?

Sadece belirli bir eğri için verileri değiştirmeniz gerekiyorsa, işte bir örnek:

#include <Graphics\Graphic.mqh>
//+------------------------------------------------------------------+
//| Komut dosyası programı başlatma işlevi|
//+------------------------------------------------------------------+
voidOnStart()
  {
//--- veri 1
   double x1[]={-10,-4,-1,2,3,4,5,6,7,8};
   double y1[]={-5,4,-10,23,17,18,-9,13,17,4};
//--- veri 2
   double x2[]={-10,-10,10,10};
   double y2[]={-10,10,-10,10};
//--- grafik
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);
//--- Puanlar
   CCurve *curve=graph.CurveAdd(x1,y1,CURVE_LINES);
   graph.CurvePlot(0);
   graph.Update();
   Sleep(1000);
   curve.Update(x2,y2);
   graph.Redraw(true);
   graph.Update();
   Sleep(1000);
  }
Not: Forumda Grafik kütüphanesi hakkında bir konu var, bu soru zaten orada gündeme getirildi.

Kodda açık, ancak Uzman Danışman'da nasıl güncellenir? Örneğin, burada her kene üzerinde rastgele bir grafik oluşturan bir kod var:

#include <Graphics\Graphic.mqh>

 double Xg[10]={0,1,2,3,4,5,6,7,8,9};
 double Yg[10]={0,0,0,0,0,0,0,0,0,0};

//------------------------------------------ 
int OnInit()
  {
   graf(); //grafiği çizin
//---
   return(INIT_SUCCEEDED);
  }
//------------------------------------------ 
void OnTick()
  {  
   for(int i=0; i<=9; i++){
    Yg[i]=(int)MathRand()/1000;  
   }
   ObjectDelete(0,"Graph");//grafiği sil, bunun doğru bir yaklaşım olmadığının farkındayım, ancak başka bir şekilde yapamıyorum.
   graf(); //yeni bir grafik çizin
  }
//-------------------------------------------------------------
void graf(){
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);

   CCurve *curve=graph.CurveAdd(Xg,Yg,CURVE_LINES);
   graph.CurvePlotAll();
   graph.Update(true);
}
//-------------------------------------------------------------

Grafiği silmeden verileri nasıl güncelleyeceğimi bulamıyorum. Lütfen bunu nasıl yapacağımı bilen bana söylesin.

 

Lütfen, bu kütüphanedeki imzalar için yazı tipi boyutlarını ve stillerini nasıl değiştirebileceğimi bilen var mı? - FontSet'i denedim - işe yaramadı.....

 
transcendreamer:

Lütfen, bu kütüphanedeki imzalar için yazı tipi boyutlarını ve stillerini nasıl değiştirebileceğimi bilen var mı? - FontSet'i denedim - işe yaramadı.....

Kütüphanenin kaynağını açın ve arama kısmına yazı tipi yazın.

 
fxsaber:

Bibla'nın kaynağını açın ve arama kısmına font yazın.

Doğrudan orada shardcode mu? 😁

Sadece hazır bir yöntem olduğunu düşünmüştüm.

Aslında font araması yaparak FontSet'i buldum ama işbirliği yapmayı reddediyor.

 
transcendreamer:

Lütfen, bu kütüphanedeki imzalar için yazı tipi boyutlarını ve stillerini nasıl değiştirebileceğimi bilen var mı? - FontSet'i denedim - işe yaramadı.....

Açıklamadaki başlıklar için mi?

graphicL.HistorySymbolSize(Point_K);//Sembollerin sembol boyutunu alın/ayarlayın
 
Aleksey Vyazmikin:

Efsanedeki imzalar için mi?

Teşekkür ederim.

Aslında eksenler için de.

 
-vallen- #:

Komut dosyasında açık, ancak Uzman Danışman'da nasıl güncellenir? Örneğin, burada her kene üzerinde rastgele bir grafik oluşturan bir kod var:

Grafiği silmeden verileri nasıl güncelleyeceğimi bulamıyorum. Lütfen bana nasıl yapılacağını bilen birini söyleyin.

Cevap var mı?

 

Изначально класс CCanvas содержал только два режима отрисовки графических примитивов   со сглаживанием (antialiasing, AA) и без него. Затем были добавлены новые функции для создания примитивов на основе алгоритма Ву:

Arc() ve Pie() için yumuşatma yöntemleri eksik.

Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / Arc
Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / Arc
  • www.mql5.com
Arc(int,int,int,int,int,int,int,int,const uint) - CCanvas - Пользовательская графика - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Ayrıca kenarları yumuşatılmış bu dolgu yöntemlerine de ihtiyaç vardır:

   void              FillTriangle(int x1,int y1,int x2,int y2,int x3,int y3,const uint clr);
   void              FillPolygon(int &x[],int &y[],const uint clr);
   void              FillCircle(int x,int y,int r,const uint clr);
   void              FillEllipse(int x1,int y1,int x2,int y2,const uint clr);
   void              Fill(int x,int y,const uint clr);
   void              Fill(int x,int y,const uint clr,const uint threshould);

//---

Şu anda, FillCircle() yöntemini kullanarak önce dolgulu bir daire çizseniz ve ardından CircleWu() yöntemini kullanarak etrafını izleseniz bile, yumuşatma kısmen kayboluyor.

Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / FillCircle
Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas / FillCircle
  • www.mql5.com
FillCircle(int,int,int,const uint) - CCanvas - Пользовательская графика - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Anatoli Kazharski #:

Ayrıca bu pürüzsüz kenar doldurma yöntemlerine de ihtiyacınız var:

//---

Şu anda, FillCircle() yöntemini kullanarak önce dolgulu bir daire çizseniz ve ardından CircleWu() yöntemini kullanarak etrafını izleseniz bile, yumuşatma kısmen kayboluyor.

Tüm yumuşatma yöntemleri büyük ölçüde çizginin opaklığına bağlıdır. Yaklaşık %50 opaklıkta, her şey yumuşatılmamış hale gelir ve artefaktlar oluşur.