Felmerülhet az igény, hogy szeretnék rögzíteni az aktuális chart tartalmát , és ezeket archiválva összegyűjtögetni  valahol a számítógépen , esetleg egy sikeres üzletkötés adatait szeretnénk menteni későbbi elemzések érdekében. Sorozat második tagja ként egy erre a célra létrehozott indikátorban futó program megírását fogom leírni lépésről-lépésre.

Szükségünk lesz egy könnyen elérhető gombra , amit ha a charton megnyomunk a kép automatikus mentésre kerül.

A print screen készítésére a következő voidot fogjuk használni:

#region kepolvasas          
void kep(string kep)
{          
      Form currentForm = Form.ActiveForm;
      Graphics graph = null;
      try
            {
            try { Bitmap bmp = new Bitmap(currentForm.Width, currentForm.Height);
            graph = Graphics.FromImage(bmp); // bmp-ben ment                 graph.CopyFromScreen(currentForm.Bounds.Location.X, currentForm.Bounds.Location.Y, 0, 0, bmp.Size);
            bmp.Save(kep);
            }
            catch{;}
      }finally
            {
            }
            }    
#endregion


A void működése egyszerű , beolvas egy string típusú változót (ami később a file neve lesz ) , leméri az éppen aktív ablak méretét  (jelen esetben a chartunkat) és lementi a megfelelő helyre bmp formátumban.
a void meghívása a következő:

screenshot(@"C:\Users\szilagyid\Documents\NinjaTrader 7\bin\Custom\x.bmp");

Ezek után csak egy gombot kell elhelyeznünk a charton , ami automatikusan meghívja majd a print screen készítőnket.


Definiáljunk hát változót a gombunknak a variable regionben.:
private ToolStrip        toolStrip;

private ToolStripButton    screenshot;

Ezeket a változókat meghívjuk az OnStartUp() eseményben , és állítsuk be a paramétereit is:

protected override void OnStartUp()
            {
                  Control[] tsr = ChartControl.Controls.Find("tsrTool", false);
                        if(tsr != null)
                        {    
                             toolStrip = (ToolStrip) tsr[0];
                             if(toolStrip != null)
                             {                      
                                   screenshot = new ToolStripButton("screenshot");
                                   screenshot.ForeColor = Color.Gainsboro;
                                   screenshot.BackColor= Color.Green;  
                                   screenshot.Text = "screenshot";
                                   screenshot.Click += screenshot_Click;
                                   toolStrip.Items.Add(screenshot);
                             }
                        }   
            }



Mint fent láthatjuk a gomb lenyomásakor:  a screenshot_click esemény fog lefutni. : ez a void fogja meghívni a screenshot utasításunkat. így:

public void screenshot_Click(object sender, EventArgs e)
            {
            kep(@"d:\Documents and Settings\xyz\Dokumentumok\NinjaTrader 7\tmp\x.bmp");            
            }    

           
Elkerülendő továbbá, hogy a program minden frissítéskor egy új gombot helyezzen a chartra , úgyhogy az on termination eseményben érdemes törölnünk a meglévő gombjainkat. így :

protected override void OnTermination()
 {
toolStrip.Items.Remove(screenshot);
screenshot = null;
base.OnTermination();  }


Az output kb. így fog kinézni:
x_2.bmp

A teljes kód:

#region Variables
      int myInput0;          
            private ToolStrip        toolStrip;
            private ToolStripButton    screenshot; 
        #endregion
        protected override void Initialize()
        {
            Add(new Plot(Color.FromKnownColor(KnownColor.Orange), PlotStyle.Line, "Plot0"));
            Overlay                      = true;   
        }
           protected override void OnStartUp()
            {
                  Control[] tsr = ChartControl.Controls.Find("tsrTool", false);
                        if(tsr != null)
                        {    
                             toolStrip = (ToolStrip) tsr[0];
                             if(toolStrip != null)
                             {          
                                   //tweettextbox.Size.Height = Size.Height(10);
                                   //tweettextbox.Size.Width = Size.Width(150);                    
                                   screenshot = new ToolStripButton("screenshot");
                                   screenshot.ForeColor = Color.Gainsboro;
                                   screenshot.BackColor= Color.Green;  
                                   screenshot.Text = "screenshot";
                                   screenshot.Click += screenshot_Click;
                                   toolStrip.Items.Add(screenshot);                                              
                             }
                        }                  
            }
           
    protected override void OnTermination()
                        {
                                  toolStrip.Items.Remove(screenshot);
                                         screenshot = null;
                                         base.OnTermination();                       
                        }
        /// <summary>
        /// Called on each bar update event (incoming tick)
        /// </summary>
        protected override void OnBarUpdate()
        {
            //if (Historical != true){ScreenShot();}       
           // Plot0.Set(Close[0]);
        }      
            public void screenshot_Click(object sender, EventArgs e)
            {
            kep(@"d:\Documents and Settings\daszilagyi\Dokumentumok\NinjaTrader 7\tmp\x.bmp");              
            }               
            #region kepolvasas          
void kep(string kep)
{          
      Form currentForm = Form.ActiveForm;
      Graphics graph = null;
      try
            {
            try { Bitmap bmp = new Bitmap(currentForm.Width, currentForm.Height);
            graph = Graphics.FromImage(bmp); // bmp-ben ment          
      graph.CopyFromScreen(currentForm.Bounds.Location.X, currentForm.Bounds.Location.Y, 0, 0, bmp.Size);
            bmp.Save(kep);
            }
            catch{;}
      }finally
            {
            }
            }
#endregion

Az indikátor egy verzióját le le lehet tölteni itt 

A bejegyzés trackback címe:

https://algotrader.blog.hu/api/trackback/id/tr514811196

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása