Browse Source

PdfVisitor, Alignment.Right, WpfVisitor.cs Draw Border around Control

pull/681/head
Peter Forstmeier 10 years ago
parent
commit
76f56f7616
  1. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfHelper.cs
  2. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/FixedDocumentCreator.cs
  3. 46
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfHelper.cs

@ -36,6 +36,7 @@ namespace ICSharpCode.Reporting.Pdf @@ -36,6 +36,7 @@ namespace ICSharpCode.Reporting.Pdf
var font = PdfHelper.CreatePdfFont(exportColumn);
var rect = new Rectangle(columnLocation,exportColumn.DesiredSize).ToXRect();
textFormatter.Alignment = XParagraphAlignment(exportColumn);
textFormatter.DrawString(exportColumn.Text,
font,
CreateBrush(exportColumn.ForeColor),
@ -102,7 +103,7 @@ namespace ICSharpCode.Reporting.Pdf @@ -102,7 +103,7 @@ namespace ICSharpCode.Reporting.Pdf
case System.Windows.TextAlignment.Center:
return PdfSharp.Drawing.Layout.XParagraphAlignment.Center;
case System.Windows.TextAlignment.Right:
return PdfSharp.Drawing.Layout.XParagraphAlignment.Center;
return PdfSharp.Drawing.Layout.XParagraphAlignment.Right;
case System.Windows.TextAlignment.Justify:
return PdfSharp.Drawing.Layout.XParagraphAlignment.Justify;
}

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/FixedDocumentCreator.cs

@ -75,7 +75,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -75,7 +75,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
formattedText.MaxTextWidth = exportText.DesiredSize.Width ;
formattedText.TextAlignment = exportText.TextAlignment;
if (!exportText.CanGrow) {
formattedText.MaxTextHeight = exportText.Size.Height;
} else {
@ -150,6 +150,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -150,6 +150,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
FixedPage.SetTop(element,exportColumn.Location.Y);
}
/*
public static Point CalculateAlignmentOffset (FormattedText formattedText, ExportText exportText) {
var offset = new Point(0,0);

46
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs

@ -93,12 +93,13 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -93,12 +93,13 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
Canvas RenderGraphicsContainer(IExportColumn column)
{
Canvas RenderGraphicsContainer(IExportColumn column){
var graphicsContainer = column as GraphicsContainer;
var graphCanvas = FixedDocumentCreator.CreateContainer(graphicsContainer);
CanvasHelper.SetPosition(graphCanvas, column.Location.ToWpf());
graphCanvas.Background = FixedDocumentCreator.ConvertBrush(column.BackColor);
if (graphicsContainer != null) {
var rect = column as ExportRectangle;
if (rect != null) {
@ -116,29 +117,41 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -116,29 +117,41 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
// http://stackoverflow.com/questions/25308612/vertical-alignment-with-drawingcontext-drawtext
public override void Visit(ExportText exportColumn){
public override void Visit(ExportText exportColumn){
var formattedText = FixedDocumentCreator.CreateFormattedText((ExportText)exportColumn);
var location = new Point(exportColumn.Location.X,exportColumn.Location.Y);
var visual = new DrawingVisual();
using (var drawingContext = visual.RenderOpen()){
var desiredRect = new Rect(location,new Size(exportColumn.DesiredSize.Width,exportColumn.DesiredSize.Height));
if (ShouldSetBackcolor(exportColumn)) {
var r = new Rect(location,new Size(exportColumn.Size.Width,exportColumn.Size.Height));
drawingContext.DrawRectangle(FixedDocumentCreator.ConvertBrush(exportColumn.BackColor),
null,
new Rect(location,new Size(exportColumn.Size.Width,exportColumn.Size.Height)));
null,
desiredRect);
}
drawingContext.DrawText(formattedText,location);
if (HasFrame(exportColumn)) {
desiredRect.Inflate(2,2);
var pen = FixedDocumentCreator.CreateWpfPen(exportColumn);
pen.Thickness = 2;
drawingContext.DrawRectangle(null, pen,desiredRect);
}
}
var dragingElement = new DrawingElement(visual);
UIElement = dragingElement;
var drawingElement = new DrawingElement(visual);
UIElement = drawingElement;
}
public override void Visit(ExportLine exportLine)
{
public override void Visit(ExportLine exportLine){
var pen = FixedDocumentCreator.CreateWpfPen(exportLine);
var visual = new DrawingVisual();
using (var dc = visual.RenderOpen()){
@ -152,8 +165,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -152,8 +165,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
public override void Visit(ExportRectangle exportRectangle)
{
public override void Visit(ExportRectangle exportRectangle){
var border = CreateBorder(exportRectangle);
border.CornerRadius = new CornerRadius(Convert.ToDouble(exportRectangle.CornerRadius));
CanvasHelper.SetPosition(border, new Point(0,0));
@ -163,8 +175,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -163,8 +175,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
public override void Visit(ExportCircle exportCircle)
{
public override void Visit(ExportCircle exportCircle){
var drawingElement = CircleVisual(exportCircle);
var containerCanvas = CreateItemsInContainer(exportCircle.ExportedItems);
containerCanvas.Children.Insert(0,drawingElement);
@ -199,8 +210,8 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -199,8 +210,8 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
static Border CreateBorder(IExportColumn exportColumn)
{
static Border CreateBorder(IExportColumn exportColumn){
var border = new Border();
border.BorderThickness = Thickness(exportColumn);
border.BorderBrush = FixedDocumentCreator.ConvertBrush(exportColumn.ForeColor);
@ -211,8 +222,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -211,8 +222,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
static Thickness Thickness(IExportColumn exportColumn)
{
static Thickness Thickness(IExportColumn exportColumn){
double bT;
bT = !IsGraphicsContainer(exportColumn) ? 1 : Convert.ToDouble(((GraphicsContainer)exportColumn).Thickness);
return new Thickness(bT);

Loading…
Cancel
Save