Exemplo n.º 1
0
        /// <summary>
        /// draw current dots from point a to b
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <param name="pos"></param>
        protected void drawDots(Point a, Point b, double pos)
        {
            if ((!CirSim.Sim.IsRunning) || pos == 0 || !ControlPanel.ChkShowDots.Checked)
            {
                return;
            }
            var dx = b.X - a.X;
            var dy = b.Y - a.Y;
            var dr = Math.Sqrt(dx * dx + dy * dy);
            int ds = CirSim.GRID_SIZE;

            pos %= ds;
            if (pos < 0)
            {
                pos += ds;
            }
            if (ControlPanel.ChkPrintable.Checked)
            {
                Context.LineColor = CustomGraphics.GrayColor;
            }
            else
            {
                Context.LineColor = Color.Yellow;
            }
            for (var di = pos; di < dr; di += ds)
            {
                var x0 = (int)(a.X + di * dx / dr);
                var y0 = (int)(a.Y + di * dy / dr);
                Context.FillCircle(x0, y0, 1.5f);
            }
        }
Exemplo n.º 2
0
        public override void Draw(CustomGraphics g)
        {
            if (NeedsHighlight || this == CirSim.Sim.DragElm)
            {
                base.Draw(g);
                return;
            }

            drawLead(mPoint1, mLedLead1);
            drawLead(mLedLead2, mPoint2);

            g.LineColor = CustomGraphics.GrayColor;
            g.DrawCircle(mLedCenter, CR);

            double w = mCurrent / mMaxBrightnessCurrent;

            if (0 < w)
            {
                w = 255 * (1 + .2 * Math.Log(w));
            }
            if (255 < w)
            {
                w = 255;
            }
            if (w < 0)
            {
                w = 0;
            }

            g.LineColor = Color.FromArgb((int)(mColorR * w), (int)(mColorG * w), (int)(mColorB * w));
            g.FillCircle(mLedCenter.X, mLedCenter.Y, CR_INNER);

            setBbox(mPoint1, mPoint2, CR_INNER);
            updateDotCount();
            drawDots(mPoint1, mLedLead1, mCurCount);
            drawDots(mPoint2, mLedLead2, -mCurCount);
            drawPosts();
        }