示例#1
0
        VgVisualElement CreateTestRenderVx_FromImg2(string filename)
        {
            var spec = new SvgImageSpec()
            {
                ImageSrc = filename,
                Width    = new Css.CssLength(50, Css.CssUnitOrNames.Pixels),
                Height   = new Css.CssLength(50, Css.CssUnitOrNames.Pixels),
            };

            VgVisualDoc renderRoot = new VgVisualDoc(_vgVisualDocHost);

            VgVisualElement vgimg = new VgVisualElement(WellknownSvgElementName.Image, spec, renderRoot);

            vgimg.ImageBinder = _appHost.LoadImageAndBind(filename);
            return(vgimg);
        }
示例#2
0
        protected override void OnStart(AppHost host)
        {
            _appHost = host;//**
            string svgfile = "../Test8_HtmlRenderer.Demo/Samples/Svg/others/volcano3.svg";

            _vgVisualDoc = VgVisualDocHelper.CreateVgVisualDocFromFile(svgfile);
            //
            VgVisualElement vgVisualElem = _vgVisualDoc.VgRootElem;

            {
                UISprite wholeImgSprite = CreateUISpriteFromVgVisualElem(vgVisualElem);
            }
            //
            if (_vgVisualDoc.TryGetVgVisualElementById("path62_larva3", out VgVisualElement vgPart))
            {
                UISprite larvaSprite = CreateUISpriteFromVgVisualElem(vgPart, true);
                larvaSprite.SetTransformation(Affine.NewScaling(4));//scale
                larvaSprite.SetLocation(100, 100);
            }
        }
示例#3
0
        VgVisualElement CreateEllipseVxs(PixelFarm.CpuBlit.RectD newBounds)
        {
            using (VxsTemp.Borrow(out var v1))
                using (VectorToolBox.Borrow(out Ellipse ellipse))
                {
                    ellipse.Set((newBounds.Left + newBounds.Right) * 0.5,
                                (newBounds.Bottom + newBounds.Top) * 0.5,
                                (newBounds.Right - newBounds.Left) * 0.5,
                                (newBounds.Top - newBounds.Bottom) * 0.5);


                    var spec = new SvgPathSpec()
                    {
                        FillColor = Color.Red
                    };
                    VgVisualDoc     renderRoot = new VgVisualDoc();
                    VgVisualElement renderE    = new VgVisualElement(WellknownSvgElementName.Path, spec, renderRoot);
                    renderE.VxsPath = ellipse.MakeVxs(v1).CreateTrim();
                    return(renderE);
                }
        }
示例#4
0
        public static VgVisualElement CreateVgVisualElementFromGlyph(string actualFontFile, float sizeInPts, char c)
        {
            if (!s_loadedTypefaces.TryGetValue(actualFontFile, out Typography.OpenFont.Typeface typeface))
            {
                //create vgrender vx from font-glyph
                //
                using (System.IO.FileStream fs = new FileStream(actualFontFile, FileMode.Open))
                {
                    Typography.OpenFont.OpenFontReader reader = new Typography.OpenFont.OpenFontReader();
                    typeface = reader.Read(fs);
                }
            }
            if (_glyphMaskStore == null)
            {
                _glyphMaskStore = new Typography.Contours.GlyphMeshStore();
                _glyphMaskStore.FlipGlyphUpward = true;
            }
            _glyphMaskStore.SetFont(typeface, sizeInPts);
            //-----------------
            VertexStore vxs  = _glyphMaskStore.GetGlyphMesh(typeface.GetGlyphIndex(c));
            var         spec = new SvgPathSpec()
            {
                FillColor = Color.Red
            };
            VgVisualDoc     renderRoot = new VgVisualDoc();
            VgVisualElement renderE    = new VgVisualElement(WellknownSvgElementName.Path, spec, renderRoot);


            //offset the original vxs to (0,0) bounds
            //PixelFarm.CpuBlit.RectD bounds = vxs.GetBoundingRect();
            //Affine translate = Affine.NewTranslation(-bounds.Left, -bounds.Bottom);
            //renderE._vxsPath = vxs.CreateTrim(translate);


            PixelFarm.CpuBlit.RectD bounds = vxs.GetBoundingRect();
            Affine translate = Affine.NewTranslation(-bounds.Left, -bounds.Bottom);

            renderE.VxsPath = vxs.CreateTrim(translate);
            return(renderE);
        }
示例#5
0
        VgVisualElement CreateTestRenderVx_BasicShape()
        {
            var spec = new SvgPathSpec()
            {
                FillColor = Color.Red
            };
            VgVisualDoc     renderRoot = new VgVisualDoc();
            VgVisualElement renderE    = new VgVisualElement(WellknownSvgElementName.Path, spec, renderRoot);

            using (Tools.BorrowVxs(out var v1))
            {
                //red-triangle ***
                v1.AddMoveTo(10, 10);
                v1.AddLineTo(60, 10);
                v1.AddLineTo(60, 30);
                v1.AddLineTo(10, 30);
                v1.AddCloseFigure();
                renderE.VxsPath = v1.CreateTrim();
            }

            return(renderE);
        }
示例#6
0
        protected override void OnStart(AppHost host)
        {
            _vgVisualDocHost = new VgVisualDocHost();
            _vgVisualDocHost.SetInvalidateDelegate(vgElem =>
            {
                //invalidate graphic here
            });

            _backBoard           = new BackDrawBoardUI(800, 600);
            _backBoard.BackColor = Color.White;
            host.AddChild(_backBoard);

            //load lion svg

            string svgfile = "../Test8_HtmlRenderer.Demo/Samples/Svg/others/tiger.svg";
            //string svgfile = "1f30b.svg";
            //string svgfile = "../Data/Svg/twemoji/1f30b.svg";
            //string svgfile = "../Data/1f30b.svg";
            //string svgfile = "../Data/Svg/twemoji/1f370.svg";

            VgVisualDoc     vgDocRoot = ReadSvgFile(svgfile);
            VgVisualElement vgVisElem = vgDocRoot.VgRootElem;
            var             uiSprite  = new UISprite(10, 10);

            uiSprite.LoadVg(vgVisElem);
            _backBoard.AddChild(uiSprite);


            //
            _redBox           = new LayoutFarm.CustomWidgets.Box(50, 50); //visual rect box
            _redBox.BackColor = Color.Red;
            _redBox.SetLocation(10, 10);
            //box1.dbugTag = 1;
            SetupActiveBoxProperties(_redBox);
            _backBoard.AddChild(_redBox);
            //----------------------


            //--------
            _rectBoxController = new CustomWidgets.RectBoxController();
            _rectBoxController.Init();
            _backBoard.AddChild(_rectBoxController);

            //foreach (var ui in rectBoxController.GetControllerIter())
            //{
            //    viewport.AddContent(ui);
            //}

            //--------
            var svgEvListener = new GeneralEventListener();

            //uiSprite.AttachExternalEventListener(svgEvListener);
            svgEvListener.MouseDown += (e) =>
            {
                //e.MouseCursorStyle = MouseCursorStyle.Pointer;
                ////--------------------------------------------
                //e.SetMouseCapture(rectBoxController.ControllerBoxMain);
                _rectBoxController.UpdateControllerBoxes(_redBox);
                _rectBoxController.Focus();
                //System.Console.WriteLine("click :" + (count++));
            };
            _rectBoxController.ControllerBoxMain.KeyDown += (s1, e1) =>
            {
                if (e1.KeyCode == UIKeys.C && e1.Ctrl)
                {
                    //test copy back image buffer from current rect area

#if DEBUG
                    //int left = rectBoxController.ControllerBoxMain.Left;
                    //int top = rectBoxController.ControllerBoxMain.Top;
                    //int width = rectBoxController.ControllerBoxMain.Width;
                    //int height = rectBoxController.ControllerBoxMain.Height;

                    //using (DrawBoard drawBoard = DrawBoardCreator.CreateNewDrawBoard(1, width, height))
                    //{

                    //    //create new draw board
                    //    drawBoard.OffsetCanvasOrigin(left, top);
                    //    _backBoard.CurrentPrimaryRenderElement.CustomDrawToThisCanvas(drawBoard, new Rectangle(0, 0, width, height));
                    //    using (var img2 = new PixelFarm.CpuBlit.ActualBitmap(width, height))
                    //    {
                    //        //copy content from drawboard to target image and save
                    //        drawBoard.RenderTo(img2, 0, 0, width, height);

                    //        PixelFarm.CpuBlit.Imaging.PngImageWriter.SaveImgBufferToPngFile(
                    //            PixelFarm.CpuBlit.ActualBitmap.GetBufferPtr(img2),
                    //            img2.Stride,
                    //            img2.Width,
                    //            img2.Height,
                    //            "d:\\WImageTest\\tiger.png");
                    //    }
                    //    //copy content from drawboard to target image and save
                    //}
#endif
                }
            };
        }