コード例 #1
0
ファイル: GDI.cs プロジェクト: zbarjevsky/.NET-Projects
        public GDI(DrawingModes DM, PenStyles PS, int PW, int PC)
        {
            // Get screen's device context
            hDC = GetDC(ScreenHWND);

            // Indicates if pen object created and
            // attached to screen's device context
            PenCreated = true;

            // Apply new drawing modes, colors e.t.c.
            this.CPenWidth = PW;
            this.CPenColor = PC;
            this.CPenStyle = PS;
            this.CDrawMode = DM;

            // Obtain system resources
            hPEN   = CreatePen(PS, PW, PC);
            OldROP = SetROP2(hDC, DM);
            SelectObject(hDC, hPEN);
        }
コード例 #2
0
 void surface_DrawingModeChanged(object source, DrawingModes drawingMode)
 {
     switch (drawingMode)
      {
     case DrawingModes.None:
        SetButtonChecked(btnCursor);
        break;
     case DrawingModes.Ellipse:
        SetButtonChecked(btnEllipse);
        break;
     case DrawingModes.Rect:
        SetButtonChecked(btnRect);
        break;
     case DrawingModes.Text:
        SetButtonChecked(btnText);
        break;
     case DrawingModes.Line:
        SetButtonChecked(btnLine);
        break;
     case DrawingModes.Arrow:
        SetButtonChecked(btnArrow);
        break;
     case DrawingModes.Crop:
        SetButtonChecked(btnCrop);
        break;
     case DrawingModes.Highlight:
        SetButtonChecked(btnHighlight);
        break;
     case DrawingModes.Obfuscate:
        SetButtonChecked(btnObfuscate);
        break;
     case DrawingModes.Path:
        SetButtonChecked(btnFreehand);
        break;
      }
 }
コード例 #3
0
ファイル: GDI.cs プロジェクト: zbarjevsky/.NET-Projects
 private static extern Int32 SetROP2(IntPtr hDC,
                                     DrawingModes nDrawMode);
コード例 #4
0
ファイル: Data.cs プロジェクト: pmorris2012/Financial-Plotter
        public List<Label> PrintValuesInRange(Graphics g, int x1, int x2, DrawingModes m)
        {
            List<Label> labels;
            int i, j;
            if(!FitRangeToData(x1, x2, out i, out j))
            {
                return null;
            }

            double smallest = GetSmallestInRange(i, j);
            double range = GetLargestInRange(i, j) - smallest;
            labels = DrawGridLines(g, i, j, (int)smallest, (int)(smallest + range));

            switch(m)
            {
                case DrawingModes.Close:
                    List<PointF> points = new List<PointF>();
                    for(int idx = set.IndexOfKey(i); idx <= set.IndexOfKey(j); ++idx)
                    {
                        double x = (set.Values[idx].date - i) * 400 / (j - i);
                        double y = (set.Values[idx].close - smallest) * 400 / range;
                        points.Add(new PointF((float)x, (float)y));
                    }
                    g.DrawLines(Pens.Red, points.ToArray());
                    break;
                case DrawingModes.HiLoOpenClose:
                    double len = Math.Min(8, Math.Floor(400 / (double)(j - i)));
                    len += len < 5 && len > 0.25 ? 1 : 0;
                    for(int idx = set.IndexOfKey(i); idx <= set.IndexOfKey(j); ++idx)
                    {
                        double x = (set.Values[idx].date - i) * 400 / (j - i);
                        double hi = (set.Values[idx].high - smallest) * 400 / range;
                        double lo = (set.Values[idx].low - smallest) * 400 / range;
                        double open = (set.Values[idx].open - smallest) * 400 / range;
                        double close = (set.Values[idx].close - smallest) * 400 / range;
                        g.DrawLine(Pens.Red, (float)x, (float)lo, (float)x, (float)hi);
                        g.DrawLine(Pens.Red, (float)x, (float)open, (float)(x - len), (float)open);
                        g.DrawLine(Pens.Red, (float)x, (float)close, (float)(x + len), (float)close);
                    }
                    break;
                case DrawingModes.CandleSticks:
                    double width = Math.Min(8, Math.Ceiling(400 / (double)(j - i)));
                    width += width < 5 ? 1 : 0;
                    for (int idx = set.IndexOfKey(i); idx <= set.IndexOfKey(j); ++idx)
                    {
                        double x = (set.Values[idx].date - i) * 400 / (j - i);
                        double hi = (set.Values[idx].high - smallest) * 400 / range;
                        double lo = (set.Values[idx].low - smallest) * 400 / range;
                        double open = (set.Values[idx].open - smallest) * 400 / range;
                        double close = (set.Values[idx].close - smallest) * 400 / range;
                        Pen p = open <= close ? Pens.Red : Pens.Black;
                        g.DrawLine(p, (float)x, (float)lo, (float)x, (float)hi);
                        if(open <= close)
                        {
                            g.FillRectangle(Brushes.Red, (float)(x - (width / 2)), (float)open, (float)width, (float)(close - open));
                        }
                        else
                        {
                            g.FillRectangle(Brushes.Black, (float)(x - (width / 2)), (float)close, (float)width, (float)(open - close));
                        }
                    }
                    break;
                default:
                    break;
            }
            return labels;
        }
コード例 #5
0
        public List <Label> PrintValuesInRange(Graphics g, int x1, int x2, DrawingModes m)
        {
            List <Label> labels;
            int          i, j;

            if (!FitRangeToData(x1, x2, out i, out j))
            {
                return(null);
            }

            double smallest = GetSmallestInRange(i, j);
            double range    = GetLargestInRange(i, j) - smallest;

            labels = DrawGridLines(g, i, j, (int)smallest, (int)(smallest + range));

            switch (m)
            {
            case DrawingModes.Close:
                List <PointF> points = new List <PointF>();
                for (int idx = set.IndexOfKey(i); idx <= set.IndexOfKey(j); ++idx)
                {
                    double x = (set.Values[idx].date - i) * 400 / (j - i);
                    double y = (set.Values[idx].close - smallest) * 400 / range;
                    points.Add(new PointF((float)x, (float)y));
                }
                g.DrawLines(Pens.Red, points.ToArray());
                break;

            case DrawingModes.HiLoOpenClose:
                double len = Math.Min(8, Math.Floor(400 / (double)(j - i)));
                len += len <5 && len> 0.25 ? 1 : 0;
                for (int idx = set.IndexOfKey(i); idx <= set.IndexOfKey(j); ++idx)
                {
                    double x     = (set.Values[idx].date - i) * 400 / (j - i);
                    double hi    = (set.Values[idx].high - smallest) * 400 / range;
                    double lo    = (set.Values[idx].low - smallest) * 400 / range;
                    double open  = (set.Values[idx].open - smallest) * 400 / range;
                    double close = (set.Values[idx].close - smallest) * 400 / range;
                    g.DrawLine(Pens.Red, (float)x, (float)lo, (float)x, (float)hi);
                    g.DrawLine(Pens.Red, (float)x, (float)open, (float)(x - len), (float)open);
                    g.DrawLine(Pens.Red, (float)x, (float)close, (float)(x + len), (float)close);
                }
                break;

            case DrawingModes.CandleSticks:
                double width = Math.Min(8, Math.Ceiling(400 / (double)(j - i)));
                width += width < 5 ? 1 : 0;
                for (int idx = set.IndexOfKey(i); idx <= set.IndexOfKey(j); ++idx)
                {
                    double x     = (set.Values[idx].date - i) * 400 / (j - i);
                    double hi    = (set.Values[idx].high - smallest) * 400 / range;
                    double lo    = (set.Values[idx].low - smallest) * 400 / range;
                    double open  = (set.Values[idx].open - smallest) * 400 / range;
                    double close = (set.Values[idx].close - smallest) * 400 / range;
                    Pen    p     = open <= close ? Pens.Red : Pens.Black;
                    g.DrawLine(p, (float)x, (float)lo, (float)x, (float)hi);
                    if (open <= close)
                    {
                        g.FillRectangle(Brushes.Red, (float)(x - (width / 2)), (float)open, (float)width, (float)(close - open));
                    }
                    else
                    {
                        g.FillRectangle(Brushes.Black, (float)(x - (width / 2)), (float)close, (float)width, (float)(open - close));
                    }
                }
                break;

            default:
                break;
            }
            return(labels);
        }
コード例 #6
0
ファイル: NPoIStyle.cs プロジェクト: TNOCS/csTouch
 public static PoIStyle GetBasicStyle(string name = "Name", DrawingModes mode = DrawingModes.Point)
 {
     if (defaultStyle != null) return defaultStyle;
     defaultStyle = new PoIStyle
     {
         MinResolution      = 0,
         MaxResolution      = -1,
         DrawingMode        = mode,
         CallOutForeground  = Colors.Black,
         CallOutFillColor   = Colors.White,
         StrokeOpacity      = 1.0,
         StrokeWidth        = 1.0,
         StrokeColor        = Colors.Black,
         FillColor          = Colors.Black,
         FillOpacity        = 1.0,
         NameLabel          = name,
         Visible            = true,
         Category           = "Other",
         Icon               = "",
         CanDelete          = true,
         CanRotate          = true,
         CanEdit            = true,
         CanMove            = true,
         CallOutOrientation = DataServer.CallOutOrientation.Right,
         CallOutTimeOut     = 5,
         IconHeight         = 30,
         IconWidth          = 30,
         ShowOnTimeline     = null,
         TapMode            = DataServer.TapMode.CallOutPopup,
         TitleMode          = TitleModes.None,
         AddMode            = AddModes.Silent,
         TimelineBehaviour  = TimelineBehaviours.None,
         AutoCallOutLabels  = false,
         MaxTitleResolution = -1,
         InnerTextColor     = Colors.White,
         Cluster            = false,
         ScalePoi           = null,
         ScaleStartResolution = null,
         MaxScale           = null,
         ScaleUnits         = null,
         SubTitles =        ""
     };
     return defaultStyle;
 }