コード例 #1
0
        private GroupFigure FindGroupByRect(RectangleF r)
        {
            var g = new GroupFigure();

            foreach (var f in Diagram.Figures.OfType <IMoveable>())
            {
                if (r.Contains(f.Location))
                {
                    g.Add(f as Figure);
                }
            }
            Diagram.SelectedFigure = g;
            return(g);
        }
コード例 #2
0
 private static void SaveImage(string fileName, Layer layer, GroupFigure group,
                               int width, int height, ImageFormat format)
 {
     using (var image = new Bitmap(width, height))
     {
         using (var g = Graphics.FromImage(image))
         {
             if (layer.FillStyle.IsVisible)
             {
                 g.Clear(Color.FromArgb(layer.FillStyle.Opacity, layer.FillStyle.Color));
             }
             @group.Renderer.Render(g, @group);
         }
         image.Save(fileName, format);
     }
 }
コード例 #3
0
        private static void HandleFillStyle(Layer layer, out GroupFigure group, out int width, out int height)
        {
            group = new GroupFigure(layer.Figures);
            var bounds = @group.GetTransformedPath().Path.GetBounds();

            if (layer.FillStyle.IsVisible)
            {
                width  = (int)(bounds.Left * 2 + bounds.Width);
                height = (int)(bounds.Top * 2 + bounds.Height);
            }
            else
            {
                width  = (int)(bounds.Width + 2);
                height = (int)(bounds.Height + 2);
                @group.Transform.Matrix.Translate(-bounds.Left, -bounds.Top);
            }
        }
コード例 #4
0
        public GroupFigure ToFigure()
        {
            var result = new GroupFigure();

            foreach (var g in Groups)
            {
                var subGroup = new GroupFigure();
                foreach (var t in g.Triangles)
                {
                    if (t.N1 != null && t.N2 != null && t.N3 != null)
                    {
                        subGroup.Add(new TriangleWithNormalsFigure(Matrix4x4.Identity, MaterialConstants.Default, t.P1, t.P2, t.P3, t.N1, t.N2, t.N3));
                    }
                    else
                    {
                        subGroup.Add(new TriangleFigure(Matrix4x4.Identity, MaterialConstants.Default, t.P1, t.P2, t.P3));
                    }
                }
                result.Add(subGroup);
            }
            return(result);
        }
コード例 #5
0
        public void GroupManipulations()
        {
            var s1 = new SphereFigure(Matrix4x4.Identity, MaterialConstants.Default);
            var s2 = new CubeFigure(Matrix4x4.Identity, MaterialConstants.Default);
            var s3 = new PlaneFigure(Matrix4x4.Identity, MaterialConstants.Default);

            var g  = new GroupFigure();
            var g2 = new GroupFigure();

            s1.Parent = g;
            s2.Parent = g;
            g.Add(s3);

            Assert.Equal(g, s1.Parent);
            Assert.Equal(g, s2.Parent);
            Assert.Equal(g, s3.Parent);

            Assert.Contains(s1, g.Figures);
            Assert.Contains(s2, g.Figures);
            Assert.Contains(s3, g.Figures);

            g.Remove(s1);
            s3.Parent = null;

            Assert.Null(s1.Parent);
            Assert.Equal(g, s2.Parent);
            Assert.Null(s3.Parent);

            Assert.DoesNotContain(s1, g.Figures);
            Assert.Contains(s2, g.Figures);
            Assert.DoesNotContain(s3, g.Figures);

            s2.Parent = g2;

            Assert.DoesNotContain(s2, g.Figures);
            Assert.Equal(g2, s2.Parent);
            Assert.Contains(s2, g2.Figures);
        }
コード例 #6
0
 public void Given_group(string id)
 {
     figure[id] = new GroupFigure();
 }