在每个报告页上打印XRLabel

本文关键字:打印 XRLabel 报告 | 更新日期: 2024-10-23 18:57:07

我有一个方法,它将XtraReport作为参数。它应该在报告的所有页面上打印一个信息区。我该如何实现这个目标?它必须打印在DetailBand上,并且LabelText有角度,所以我不能使用PageInfo控件。

事实上,问题是:如何在XtraReport对象的所有ReportPages上打印XRLabel。我尝试过,但没有成功:

XRLabel druckinfo = new XRLabel();
druckinfo.Angle = 90F;
druckinfo.Padding = new PaddingInfo(2, 2, 0, 0, 96F);
druckinfo.SizeF = new SizeF(29.16666F, 500F);
druckinfo.Font = new Font(StyleVerwaltung.Instance.Schriftart,
    StyleVerwaltung.Instance.SchriftgroesseDruckInfo);
druckinfo.Text = text;
druckinfo.LocationF = new PointF(0F, 500F);
foreach (Band band in _Report.Bands)
{
    if (band is DetailBand)
    {
        band.Controls.Add(druckinfo);
    }
}

在每个报告页上打印XRLabel

DevExpress支持向我展示了解决问题的方法:

Image img = new Bitmap(300, 300);
Graphics g = Graphics.FromImage(img);
Font schriftart = new Font(StyleVerwaltung.Instance.Schriftart,
    StyleVerwaltung.Instance.SchriftgroesseDruckInfo);
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
_Report.Watermark.ImageAlign = ContentAlignment.BottomLeft;
_Report.Watermark.ImageViewMode = ImageViewMode.Clip;
g.SmoothingMode = SmoothingMode.AntiAlias;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.TranslateTransform(0, g.VisibleClipBounds.Size.Height);
g.RotateTransform(270f);
g.DrawString(text, schriftart, Brushes.Black,
    new Rectangle(0, 0, (int)g.VisibleClipBounds.Size.Width,
                        (int)g.VisibleClipBounds.Height),
    format);
g.ResetTransform();
g.Flush();
_Report.Watermark.Image = img;
_Report.Watermark.ShowBehind = true;

它使用水印来完成这项任务。如果你不在其他上下文中使用水印,它就会起作用,但对于我的目标来说,它会像预期的那样起作用。