Grafik penceresini yenileyin - sayfa 2

 

"Sorun", göstergelerin bir limit kullanması, yani IndicatorCounted () işlevi olabilir.
çubukları yeniden boyamamak için.

Zaman çerçevesinin değiştirilmesi, WindowRedraw()'ın sıfırlayamayacağını sıfırlar. İşlevi, gösterge dizinlerini değil nesneleri yeniden çizmektir.

void WindowRedraw( )
Geçerli grafiği zorla yeniden çizer. Normalde nesnelerin özellikleri değiştirildikten sonra kullanılır.

Yazdığım şeylerin çoğunda genellikle devam edip 1000 bar veya daha fazlasını yeniden hesapladığımı biliyorum ve bu
Sağ tıklama Yenile ile başlatılır.

Gösterge döngüsünü ciddi bir şekilde sınırlamazsanız, her tikte bir gösterge yenilemesi alırsınız.

 
? bazılarının neler olduğuna dair bir fikri var mı? WindowRedraw () kullandıktan sonra neden herhangi bir etki görmüyorum?

Çok teşekkürler,
 

"Zor okuma" mısınız?

 
merhaba phy,

neredeyse iki ay sonra son cevabınızı aldım. Bunu nasıl atladığımı bilmiyorum. Hala "göstergemi yeniden çizme" ile ilgili sorun yaşıyorum. Şimdi bana verdiğiniz bilgilerle sorunu çözmeye çalışacağım. çok teşekkür ederim,,,
 

Kodunuzu gösterin...

 
brspMA :
merhaba phy,

neredeyse iki ay sonra son cevabınızı aldım. Bunu nasıl atladığımı bilmiyorum. Hala "göstergemi yeniden çizme" ile ilgili sorun yaşıyorum. Şimdi bana verdiğiniz bilgilerle sorunu çözmeye çalışacağım. çok teşekkür ederim,,,
Bu konuyu okudum ve kodunuzda bir sorun olduğunu düşünüyorum => WindowRefresh() işlevi size yardımcı olmayacaktır.
 
merhaba,

Sanırım göstergeyi baştan baştan yeniden çizmeye zorlamak için sıfırlamaya çalışıyorum!? benim sorunum, yeni verilerin işlevinde geçmiş verileri değiştiren bir işlev kullanıyorum ve sonuç, grafiğimin zaman içinde bir kütle haline gelmesi. Tüm göstergemi periyodik olarak yeniden çizmem gerekiyor. Son zamanlarda, zaman çerçevesini değiştiriyorum, böylece olduğum zaman çerçevesine geri döndüğümde, grafik pencerelerimi temiz (yeniden çizilmiş) hale getiriyorum. işte kodumun şeması:

 int start (){
   int limit ;
   int counted_bars = IndicatorCounted () ;
   //---- check for possible errors
   if ( counted_bars < 0 ) return ( - 1 ) ;
   //---- last counted bar will be recounted
   if ( counted_bars > 0 ) counted_bars --;
   limit = Bars - counted_bars ;
   if ( limit > GV ) limit = GV ;
   //---- main loop
   for ( int i = limit ; i >= 1 ; i -- ){
 
 
{ calculates the variable and feed the buffers }
 
return ( 0 ) ; }
çok teşekkürler,,,
 
kodunuza 2 satır ekleyin

 int start (){
   int limit ;
   int counted_bars = IndicatorCounted () ;
   //---- check for possible errors
   if ( counted_bars < 0 ) return ( - 1 ) ;
   //---- last counted bar will be recounted
   if ( counted_bars > 0 ) counted_bars --;
   limit = Bars - counted_bars ;
 
   double startTime = GetTickCount () ;
   if ( limit > GV ) limit = GV ;
   //---- main loop
   for ( int i = limit ; i >= 1 ; i -- ){
 
 
{ calculates the variable and feed the buffers }
 
   double finishTime = GetTickCount () ;
   Print ( " Calculation time is " , ( finishTime - startTime ) / 1000.0 , " seconds " ) ;
return ( 0 ) ; }
 

GV nedir?

Son zamanlarda yaptığım şey şöyle bir şey:

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){

Her işarette göstergenin görünen kısmını yeniden çizer, ancak görüş alanı dışında kalan çubukları değil.

 
phy :

GV nedir?

Son zamanlarda yaptığım şey şöyle bir şey:

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){

Her işarette göstergenin görünen kısmını yeniden çizer, ancak görüş alanı dışında kalan çubukları değil.


GV, testi ne kadar geri almak istediğime göre sınırı ayarlamak için kullandığım global bir değişkendir.

sizler harikasınız!! Bu kodu bu öğleden sonra uygulayacağım.

 for ( int i = MathMax ( WindowFirstVisibleBar () , Bars - IndicatorCounted ()) ; i >= 0 ; i -- ){
cömertliğin için teşekkürler,,,
Neden: