Exemple #1
0
        private void _NacrtajStupac(float v, int x, int sirina)
        {
            float velicinaStupca = Math.Abs(v) / AbsMax * (Baza - MinY);
            int   y      = (int)(v > 0 ? Baza - velicinaStupca:Baza);
            int   visina = (int)Math.Abs(velicinaStupca);

            GrafickiObjekt.FillRectangle(new SolidBrush(Color.Blue), x, y, sirina, visina);
        }
Exemple #2
0
        //=====================================================================

        private void _NacrtajGrafikon()
        {
            int sirinaTocke = (SirinaOkvira - (LijevaMargina + MARGINA_KOORDINATA + 10)) / Vrijednosti.Count - _RAZMAK;
            int pozicija    = LijevaMargina + MARGINA_KOORDINATA + 10 + (sirinaTocke / 2);

            for (int i = 0; i < Vrijednosti.Count - 1; i++)
            {
                float v1           = Vrijednosti[i].Item1;
                float v2           = Vrijednosti[i + 1].Item1;
                float visinaTocke1 = Math.Abs(v1) / AbsMax * (Baza - MinY);
                float visinaTocke2 = Math.Abs(v2) / AbsMax * (Baza - MinY);

                float x1 = pozicija;
                float y1 = 0;
                float x2 = pozicija + sirinaTocke + _RAZMAK;
                float y2 = 0;
                if (v1 >= 0 && v2 >= 0)
                {
                    y1 = Baza - visinaTocke1;
                    y2 = Baza - visinaTocke2;
                }
                else if (v1 >= 0 && v2 < 0)
                {
                    y1 = Baza - visinaTocke1;
                    y2 = Baza + visinaTocke2;
                }
                else if (v1 < 0 && v2 >= 0)
                {
                    y1 = Baza + visinaTocke1;
                    y2 = Baza - visinaTocke2;
                }
                else if (v1 < 0 && v2 < 0)
                {
                    y1 = Baza + visinaTocke1;
                    y2 = Baza + visinaTocke2;
                }

                GrafickiObjekt.FillRectangle(new SolidBrush(Color.Green), (int)x1 - 4, (int)y1 - 4, 8, 8);
                GrafickiObjekt.FillRectangle(new SolidBrush(Color.Green), (int)x2 - 4, (int)y2 - 4, 8, 8);
                GrafickiObjekt.DrawLine(new Pen(Color.Blue, 2), (int)x1, (int)y1, (int)x2, (int)y2);
                pozicija += sirinaTocke + _RAZMAK;
            }
        }
        private void _NacrtajKoordinate()
        {
            _IzracunajBazu();

            // za isprekidanu crtu
            Pen pen = new Pen(Color.Red, 1);

            float[] tekstura = { 2, 4 };    // 2 tocke, 4 prazno, 2 tocke, 4 prazno, ...
            pen.DashPattern = tekstura;

            // x-koordinata
            GrafickiObjekt.DrawLine(new Pen(Color.Black, 2),
                                    LijevaMargina + MARGINA_KOORDINATA,
                                    Baza,
                                    SirinaOkvira,   // ovo je x2, ne duljina crte (kao kod sirine pravokutnika)
                                    Baza);

            // y-koordinata
            GrafickiObjekt.DrawLine(new Pen(Color.Black, 2),
                                    LijevaMargina + MARGINA_KOORDINATA,
                                    MinY,
                                    LijevaMargina + MARGINA_KOORDINATA,
                                    Baza);

            float korak           = (Baza - MinY) / 10; // podijeli y-koordinatu na 10 dijelova
            float vrijednostSkale = 0;
            float korakSkale      = AbsMax / 10;        // najveca apsolutna vrijednost / 10
            float y = Baza + 1;                         // +1 da ne ode iznad najvise tocke (vjerojatno ovisi i o debljini crte)

            while (y > MinY)
            {
                // crtica pored vrijednosti skale
                GrafickiObjekt.DrawLine(new Pen(Color.Black, 2),
                                        LijevaMargina + MARGINA_KOORDINATA - 10,
                                        y,
                                        LijevaMargina + MARGINA_KOORDINATA,
                                        y);

                // tanka linija na razini vrijednosti
                GrafickiObjekt.DrawLine(pen,
                                        LijevaMargina + MARGINA_KOORDINATA,
                                        y,
                                        SirinaOkvira,
                                        y);

                GrafickiObjekt.DrawString(Math.Round(vrijednostSkale, 1).ToString(),
                                          new Font(FontFamily.GenericSerif, 10),
                                          new SolidBrush(Color.Blue),
                                          new PointF(LijevaMargina + MARGINA_K_BROJEVA, y));
                y -= korak;
                vrijednostSkale += korakSkale;
            }

            if (Min < 0)
            {
                // y-koordinata ispod baze
                GrafickiObjekt.DrawLine(new Pen(Color.Black, 2),
                                        LijevaMargina + MARGINA_KOORDINATA,
                                        Baza,
                                        LijevaMargina + MARGINA_KOORDINATA,
                                        Baza + (Baza - MinY));

                // 0 je vec nacrtana pa pocinjemo od sljedeceg koraka
                vrijednostSkale = korakSkale;
                y = Baza - 1 + korak;      // -1 iz istog razloga kao i +1 gore
                while (y < Baza + (Baza - MinY))
                {
                    // crtica pored vrijednosti skale
                    GrafickiObjekt.DrawLine(new Pen(Color.Black, 2),
                                            LijevaMargina + MARGINA_KOORDINATA - 10,
                                            y,
                                            LijevaMargina + MARGINA_KOORDINATA,
                                            y);

                    // tanka linija na razini vrijednosti
                    GrafickiObjekt.DrawLine(pen,
                                            LijevaMargina + MARGINA_KOORDINATA,
                                            y,
                                            SirinaOkvira,
                                            y);

                    GrafickiObjekt.DrawString(Math.Round(-vrijednostSkale, 1).ToString(),
                                              new Font(FontFamily.GenericSerif, 10),
                                              new SolidBrush(Color.Blue),
                                              new PointF(LijevaMargina + MARGINA_K_BROJEVA, y));
                    y += korak;
                    vrijednostSkale += korakSkale;
                }
            }
        }