public void AddCustomControlBox(CustomRenderBox ctrlBox)
        {
            _controlPoints.Add(ctrlBox);

            //important: don't forget to set parent link
            //this will route update graphics msg from client to parent
            CustomRenderBox.SetParentLink(ctrlBox, this);
        }
        protected override void RenderClientContent(DrawBoard d, UpdateArea updateArea)
        {
            //1. save canvas origin, (don't forget to restore this)
            int enter_canvas_x = d.OriginX;
            int enter_canvas_y = d.OriginY;

            //d.FillRectangle(Color.FromArgb(100, Color.Yellow),
            //    _approxRectBounds.Left,
            //    _approxRectBounds.Top,
            //    _approxRectBounds.Width,
            //    _approxRectBounds.Height);

            foreach (CustomRenderBox renderE in _controlPoints)
            {
                int x = renderE.X;
                int y = renderE.Y;

                //2. set canvas origin
                d.SetCanvasOrigin(enter_canvas_x + x, enter_canvas_y + y);
                //3. offset update area (see opposite direction)
                updateArea.Offset(-x, -y);
                //4.
                RenderElement.Render(renderE, d, updateArea);
                //5. restore only update area back
                updateArea.Offset(x, y);
            }
            //restore enter canvas x, y
            d.SetCanvasOrigin(enter_canvas_x, enter_canvas_y);

            ////lets draw lines that link  control points
            int j = _controlPoints.Count;

            float strokeW     = d.StrokeWidth;
            Color strokeColor = d.StrokeColor;

            d.StrokeWidth = 2;
            d.StrokeColor = Color.Black;


            for (int i = 1; i < j; ++i)
            {
                CustomRenderBox b_0 = _controlPoints[i - 1];
                CustomRenderBox b_1 = _controlPoints[i];
                d.DrawLine(b_0.X, b_0.Y, b_1.X, b_1.Y);
            }
            {
                CustomRenderBox b_0 = _controlPoints[j - 1];
                CustomRenderBox b_1 = _controlPoints[0];
                d.DrawLine(b_0.X, b_0.Y, b_1.X, b_1.Y);
            }
            //and the last one
            d.StrokeColor = strokeColor;
            d.StrokeWidth = strokeW;
        }
示例#3
0
        protected override void OnStartDemo(SampleViewport viewport)
        {
            var bgRenderBox = new CustomRenderBox(viewport.Root, 800, 600);

            bgRenderBox.BackColor = Color.LightGray;
            viewport.AddContent(bgRenderBox);
            //---------------------------------------------------------------------
            var miniAggg = new MyMiniAggCanvasRenderElement(viewport.Root, 400, 600);
            var lionFill = new PixelFarm.Agg.LionFillSprite();

            miniAggg.AddSprite(lionFill);
            viewport.AddContent(miniAggg);
        }
示例#4
0
        //--------------------------------------------------------------------------
        void CreateVScrollbarContent(RootGraphic rootgfx)
        {
            CustomRenderBox bgBox = new CustomRenderBox(rootgfx, this.Width, this.Height);

            bgBox.HasSpecificSize = true;
            bgBox.SetController(this);
            bgBox.SetLocation(this.Left, this.Top);
            //MinButton
            SetupMinButtonProperties(bgBox);
            //MaxButton
            SetupMaxButtonProperties(bgBox);
            //ScrollButton
            SetupVerticalScrollButtonProperties(bgBox);
            //--------------
            this.mainBox = bgBox;
        }
示例#5
0
        //--------------------------------------------------------------------------
        void CreateVScrollbarContent()
        {
            CustomRenderBox bgBox = new CustomRenderBox(this.Width, this.Height);

            //bgBox.HasSpecificWidthAndHeight = true;
            bgBox.SetController(this);
            bgBox.SetLocation(this.Left, this.Top);
            //MinButton
            SetupMinButtonProperties(bgBox);
            //MaxButton
            SetupMaxButtonProperties(bgBox);
            //ScrollButton
            SetupVerticalScrollButtonProperties(bgBox);
            //--------------
            _mainBox = bgBox;
        }
        public void UpdateRectBounds()
        {
            //find max bounds of this control
            var rectBoundsAcc = new RectBoundsAccum();

            rectBoundsAcc.Init();
            int j = _controlPoints.Count;

            for (int i = 0; i < j; ++i)
            {
                CustomRenderBox p = _controlPoints[i];
                rectBoundsAcc.Update(p.X, p.Y);
            }
            //
            _approxRectBounds         = rectBoundsAcc.ToRectF();
            _approxRectBounds.Width  += 10;
            _approxRectBounds.Height += 10;
        }
 public override bool HasCustomHitTest => true; //set to true, CustomHitTest() will be called
 protected override bool CustomHitTest(HitChain hitChain)
 {
     if (_approxRectBounds.Contains(hitChain.TestPoint))
     {
         //in rgn
         //check hit test on each child
         for (int i = _controlPoints.Count - 1; i >= 0; --i)
         {
             CustomRenderBox ctrlPoint = _controlPoints[i];
             if (ctrlPoint.HitTestCore(hitChain))
             {
                 hitChain.AddHitObject(ctrlPoint);
                 return(true);
             }
         }
     }
     return(false);
 }