From d27ecc5ece2c2e802f1d78d69992d483b6740ecf Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Sun, 20 Apr 2014 16:53:19 +0200 Subject: [PATCH] Circle as Container --- .../src/Designer/ContainerDesigner.cs | 2 +- .../Src/Items/Graphics/BaseCircleItem.cs | 7 ++- .../PageBuilder/ExportColumns/ExportCircle.cs | 16 +---- .../Src/Wpf/Visitor/WpfVisitor.cs | 59 +++++++++++-------- 4 files changed, 41 insertions(+), 43 deletions(-) diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ContainerDesigner.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ContainerDesigner.cs index 6fdcc3a04c..bbecfd6f9c 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ContainerDesigner.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ContainerDesigner.cs @@ -76,7 +76,7 @@ namespace ICSharpCode.Reporting.Addin.Designer componentChangeService = (IComponentChangeService)GetService(typeof(IComponentChangeService)); if (componentChangeService != null) { - componentChangeService.ComponentRename += new ComponentRenameEventHandler(OnComponentRename); + componentChangeService.ComponentRename += OnComponentRename; } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/Graphics/BaseCircleItem.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/Graphics/BaseCircleItem.cs index 0381da0ae7..991be326c7 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/Graphics/BaseCircleItem.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/Graphics/BaseCircleItem.cs @@ -16,6 +16,8 @@ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. +using System.Collections.Generic; +using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.PageBuilder.ExportColumns; @@ -24,10 +26,11 @@ namespace ICSharpCode.Reporting.Items /// /// Description of BaseCircleItem. /// - public class BaseCircleItem:BaseGraphics + public class BaseCircleItem:BaseGraphics,IReportContainer { public BaseCircleItem() { + Items = new List(); } public override IExportColumn CreateExportColumn() @@ -42,5 +45,7 @@ namespace ICSharpCode.Reporting.Items ex.DashStyle = DashStyle; return ex; } + + public List Items {get;private set;} } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportCircle.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportCircle.cs index d4b7102668..33a536e265 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportCircle.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportCircle.cs @@ -25,23 +25,9 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns /// /// Description of ExportCircle. /// - public class ExportCircle:GraphicsContainer,IExportGraphics,IAcceptor + public class ExportCircle:GraphicsContainer,IExportGraphics { - - public void Accept(IVisitor visitor) - { - visitor.Visit(this); - } - - - public override ICSharpCode.Reporting.Arrange.IMeasurementStrategy MeasurementStrategy() - { - throw new NotImplementedException(); - } - -// public int Thickness {get;set;} - public DashStyle DashStyle {get;set;} public LineCap StartLineCap {get;set;} diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs index edb8ff0a33..a323b37337 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs @@ -139,39 +139,33 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor { var border = CreateBorder(exportRectangle); CanvasHelper.SetPosition(border, new Point(0,0)); - var sp = new StackPanel(); - sp.Orientation = Orientation.Horizontal; + var panel = new StackPanel(); + panel.Orientation = Orientation.Horizontal; foreach (var element in exportRectangle.ExportedItems) { var acceptor = element as IAcceptor; - acceptor.Accept(this); - sp.Children.Add(UIElement); + acceptor.Accept(this); + panel.Children.Add(UIElement); } - border.Child = sp; + border.Child = panel; UIElement = border; } public override void Visit(ExportCircle exportCircle) { - var pen = FixedDocumentCreator.CreateWpfPen(exportCircle); - var rad = CalcRad(exportCircle.Size); + var containerCanvas = new Canvas(); + + var drawingElement = CircleVisual(exportCircle); - var visual = new DrawingVisual(); - using (var dc = visual.RenderOpen()){ - - dc.DrawEllipse(FixedDocumentCreator.ConvertBrush(exportCircle.BackColor), - pen, - new Point(exportCircle.Location.X + rad.X, - exportCircle.Location.Y + rad.Y), - rad.X, - rad.Y); - - - } - var dragingElement = new DrawingElement(visual); - UIElement = dragingElement; + containerCanvas.Children.Add(drawingElement); + foreach (var element in exportCircle.ExportedItems) { + var acceptor = element as IAcceptor; + acceptor.Accept(this); + containerCanvas.Children.Add(UIElement); + } + UIElement = containerCanvas; } - + bool IsGraphicsContainer (IExportColumn column) { return column is GraphicsContainer; @@ -183,6 +177,22 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor } + DrawingElement CircleVisual(GraphicsContainer circle){ + var pen = FixedDocumentCreator.CreateWpfPen(circle); + var rad = CalcRadius(circle.Size); + + var visual = new DrawingVisual(); + using (var dc = visual.RenderOpen()){ + dc.DrawEllipse(FixedDocumentCreator.ConvertBrush(circle.BackColor), + pen, + new Point( rad.X,rad.Y), + rad.X, + rad.Y); + } + return new DrawingElement(visual); + } + + Border CreateBorder(IExportColumn exportColumn) { double bT; @@ -202,7 +212,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor } - static Point CalcRad(System.Drawing.Size size) { + static Point CalcRadius(System.Drawing.Size size) { return new Point(size.Width /2,size.Height /2); } @@ -212,7 +222,4 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor public FixedPage FixedPage {get; private set;} } - - - }