Пример #1
0
        private void report_FillEmptySpace(object sender, BandEventArgs e)
        {
            if (!(bool)DrawZBelowTheTableParameter.Value)
            {
                FillEmptySpace -= report_FillEmptySpace;
                return;
            }
            int bandHeight = GraphicsUnitConverter.Convert(e.Band.Height, ReportUnit.ToDpi(), ReportUnit.HundredthsOfAnInch.ToDpi());

            if (bandHeight <= 30)
            {
                return;
            }
            Size     size         = new Size(612, bandHeight - 30);
            Size     sizeInPixels = XRConvert.Convert(size, GraphicsDpi.HundredthsOfAnInch, GraphicsDpi.Pixel);
            Bitmap   zBitmap      = new Bitmap(sizeInPixels.Width, sizeInPixels.Height);
            Graphics gr           = Graphics.FromImage(zBitmap);

            using (Pen pen = new Pen(Color.FromArgb(205, 205, 205), 4)) {
                Point[] points = new Point[] {
                    new Point(0, 4),
                    new Point(sizeInPixels.Width, 4),
                    new Point(0, sizeInPixels.Height - 4),
                    new Point(sizeInPixels.Width, sizeInPixels.Height - 4)
                };
                gr.DrawLines(pen, points);
            }
            XRPictureBox pictureBox = new XRPictureBox();

            pictureBox.BackColor = Color.Transparent;
            pictureBox.Size      = size;
            pictureBox.Location  = new Point(19, 15);
            pictureBox.Image     = zBitmap;
            e.Band.Controls.Add(pictureBox);
        }
Пример #2
0
        private void XtraReport1_FillEmptySpace(object sender, BandEventArgs e)
        {
            int  labelsCount        = Convert.ToInt32(e.Band.Height / this.dummyDetailBandLabel.Height);
            Size targetSize         = new Size((this.PageWidth - this.Margins.Left - this.Margins.Right), e.Band.Height);
            Size labelSize          = new Size(this.dummyDetailBandLabel.Width, this.dummyDetailBandLabel.Height);
            Size targetSizeInPixels = XRConvert.Convert(targetSize, GraphicsDpi.HundredthsOfAnInch, GraphicsDpi.Pixel);
            Size labelSizeInPixels  = XRConvert.Convert(labelSize, GraphicsDpi.HundredthsOfAnInch, GraphicsDpi.Pixel);

            Bitmap   targetBitmap = new Bitmap(targetSizeInPixels.Width, targetSizeInPixels.Height);
            Graphics gr           = Graphics.FromImage(targetBitmap);
            Point    pt           = new Point(0, 0);
            Size     sz           = new Size(targetSizeInPixels.Width, labelSizeInPixels.Height);

            for (int i = 0; i < labelsCount; i++)
            {
                if (i % 2 == 0)
                {
                    gr.FillRectangle(Brushes.LightBlue, new Rectangle(pt, sz));
                }
                else
                {
                    gr.FillRectangle(Brushes.Khaki, new Rectangle(pt, sz));
                }

                pt.Y += labelSizeInPixels.Height;
            }

            XRPictureBox pictureBox = new XRPictureBox();

            pictureBox.BackColor = Color.Transparent;
            pictureBox.Size      = targetSize;
            pictureBox.Location  = new Point(0, 0);
            pictureBox.Image     = targetBitmap;
            e.Band.Controls.Add(pictureBox);
        }
Пример #3
0
        static List <int> GetColumnsBestFitWidth(DataTable dataTable, Font font)
        {
            List <int> optimalColumnWidth = new List <int>();
            float      maxWidth           = 0;
            float      tempWidth          = 0;

            for (int i = 1; i < dataTable.Rows.Count; i++)
            {
                tempWidth = MeasureWidth(dataTable.Rows[i][0].ToString(), font);
                maxWidth  = maxWidth > tempWidth ? maxWidth : tempWidth;
            }
            optimalColumnWidth.Add(Convert.ToInt32(XRConvert.Convert(maxWidth, GraphicsUnit.Pixel, GraphicsUnit.Inch) * 100 + 1));
            for (int i = 1; i < dataTable.Columns.Count; i++)
            {
                tempWidth = MeasureWidth(dataTable.Columns[i].ColumnName.ToString(), font);
                maxWidth  = 50 > tempWidth ? 50 : tempWidth;
                optimalColumnWidth.Add(Convert.ToInt32(XRConvert.Convert(maxWidth, GraphicsUnit.Pixel, GraphicsUnit.Inch) * 100 + 1));
            }
            return(optimalColumnWidth);
        }
        private XtraReport BuildLabelReport(CustomLabelReportModel model)
        {
            var           report        = new XtraReport();
            PaperKindList paperKindList = InitPaperKindList(model, report);

            report.ReportUnit = model.MeasurementUnit == System.Drawing.GraphicsUnit.Millimeter ? ReportUnit.TenthsOfAMillimeter : ReportUnit.HundredthsOfAnInch;
            report.PaperKind  = paperKindList.PaperKind;
            report.Landscape  = paperKindList.Landscape;
            report.RollPaper  = false;
            float labelDpi = GraphicsDpi.UnitToDpi(model.MeasurementUnit);
            int   top      = (int)XRConvert.Convert(model.TopMargin, labelDpi, report.Dpi);
            int   left     = (int)XRConvert.Convert(model.LeftMargin, labelDpi, report.Dpi);
            int   right    = (int)XRConvert.Convert(model.RightMargin, labelDpi, report.Dpi);
            int   bottom   = (int)XRConvert.Convert(model.BottomMargin, labelDpi, report.Dpi);

            report.Margins = new Margins(left, right, top, bottom);
            float      labelWidth  = XRConvert.Convert(model.LabelWidth, labelDpi, report.Dpi);
            float      labelHeight = XRConvert.Convert(model.LabelHeight, labelDpi, report.Dpi);
            DetailBand detail      = new DetailBand();

            report.Bands.Add(detail);
            XRPanel panel = new XRPanel();

            panel.CanGrow = false;
            detail.Controls.Add(panel);
            panel.WidthF   = labelWidth;
            panel.HeightF  = labelHeight;
            panel.Borders  = BorderSide.All;
            detail.HeightF = XRConvert.Convert(model.VerticalPitch, labelDpi, report.Dpi);

            var labelInfo = DevExpress.XtraReports.Wizards.Builder.ReportInfoFactory.CreateLabelInfo(GetDefaultLabelReportMode(model));

            report.ReportPrintOptions.DetailCountOnEmptyDataSource = labelInfo.CalculateLabelCount(paperKindList.Size, paperKindList.UnitDpi);
            if (labelInfo.MoreOneColumnOnPage(paperKindList.Size, paperKindList.UnitDpi))
            {
                detail.MultiColumn.ColumnWidth   = XRConvert.Convert(labelInfo.LabelWidth, labelDpi, report.Dpi);
                detail.MultiColumn.ColumnSpacing = XRConvert.Convert(labelInfo.HPitch - labelInfo.LabelWidth, labelDpi, report.Dpi);
                detail.MultiColumn.Layout        = ColumnLayout.AcrossThenDown;
            }
            return(report);
        }