Exemple #1
0
        /// <summary> 节整页绘制前事件 </summary>
        private void DoPaintPaperBefor(object sender, int aPageIndex, RECT aRect,
                                       HCCanvas aCanvas, SectionPaintInfo aPaintInfo)
        {
            if ((!aPaintInfo.Print) && (sender as HCSection).ReadOnly)
            {
                aCanvas.Font.BeginUpdate();
                try
                {
                    aCanvas.Font.Size   = 48;
                    aCanvas.Font.Color  = Color.Gray;
                    aCanvas.Font.Family = "隶书";
                }
                finally
                {
                    aCanvas.Font.EndUpdate();
                }

                aCanvas.TextOut(aRect.Left + 10, aRect.Top + 10, "只读");
            }
        }
Exemple #2
0
        public void SaveToImage(string path, string prefix, string imageType, bool onePaper = true)
        {
            HCCanvas         vBmpCanvas = new HCCanvas();
            SectionPaintInfo vPaintInfo = new SectionPaintInfo();

            try
            {
                vPaintInfo.ScaleX    = 1;
                vPaintInfo.ScaleY    = 1;
                vPaintInfo.Zoom      = 1;
                vPaintInfo.Print     = true;
                vPaintInfo.DPI       = HCUnitConversion.PixelsPerInchX;
                vPaintInfo.ViewModel = HCViewModel.hvmFilm;

                int vWidth = 0, vHeight = 0;
                if (onePaper)
                {
                    for (int i = 0; i < FSections.Count; i++)
                    {
                        vHeight = vHeight + FSections[i].PaperHeightPix * FSections[i].PageCount;
                        if (vWidth < FSections[i].PaperWidthPix)
                        {
                            vWidth = FSections[i].PaperWidthPix;
                        }
                    }

                    vPaintInfo.WindowWidth  = vWidth;
                    vPaintInfo.WindowHeight = vHeight;

                    using (Bitmap vBmp = new Bitmap(vWidth, vHeight))
                    {
                        vBmpCanvas.Graphics = Graphics.FromImage(vBmp);

                        int vSectionIndex = 0, vSectionPageIndex = 0, vTop = 0;
                        for (int i = 0; i < this.PageCount; i++)
                        {
                            vSectionIndex = GetSectionPageIndexByPageIndex(i, ref vSectionPageIndex);
                            //vWidth = FSections[vSectionIndex].PaperWidthPix;
                            vHeight = FSections[vSectionIndex].PaperHeightPix;

                            vBmpCanvas.Brush.Color = Color.White;
                            vBmpCanvas.FillRect(new RECT(0, vTop, vWidth, vTop + vHeight));

                            ScaleInfo vScaleInfo = vPaintInfo.ScaleCanvas(vBmpCanvas);
                            try
                            {
                                FSections[vSectionIndex].PaintPaper(vSectionPageIndex, 0, vTop, vBmpCanvas, vPaintInfo);
                                vTop = vTop + vHeight;
                            }
                            finally
                            {
                                vPaintInfo.RestoreCanvasScale(vBmpCanvas, vScaleInfo);
                            }
                        }

                        vBmpCanvas.Dispose();
                        if (imageType == "BMP")
                        {
                            vBmp.Save(path + prefix + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
                        }
                        else
                        if (imageType == "JPG")
                        {
                            vBmp.Save(path + prefix + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
                        }
                        else
                        {
                            vBmp.Save(path + prefix + ".png", System.Drawing.Imaging.ImageFormat.Png);
                        }
                    }
                }
                else
                {
                    int vSectionIndex = 0, vSectionPageIndex = 0;
                    for (int i = 0; i < this.PageCount; i++)
                    {
                        vSectionIndex = GetSectionPageIndexByPageIndex(i, ref vSectionPageIndex);

                        using (Bitmap vBmp = new Bitmap(FSections[vSectionIndex].PaperWidthPix, FSections[vSectionIndex].PaperHeightPix))
                        {
                            vBmpCanvas.Graphics    = Graphics.FromImage(vBmp);
                            vBmpCanvas.Brush.Color = Color.White;
                            vBmpCanvas.FillRect(new RECT(0, 0, vBmp.Width, vBmp.Height));

                            vPaintInfo.WindowWidth  = vBmp.Width;
                            vPaintInfo.WindowHeight = vBmp.Height;
                            ScaleInfo vScaleInfo = vPaintInfo.ScaleCanvas(vBmpCanvas);
                            try
                            {
                                vBmpCanvas.Brush.Color = Color.White;
                                vBmpCanvas.FillRect(new RECT(0, 0, vBmp.Width, vBmp.Height));
                                FSections[vSectionIndex].PaintPaper(vSectionPageIndex, 0, 0, vBmpCanvas, vPaintInfo);
                            }
                            finally
                            {
                                vPaintInfo.RestoreCanvasScale(vBmpCanvas, vScaleInfo);
                            }

                            vBmpCanvas.Dispose();
                            if (imageType == "BMP")
                            {
                                vBmp.Save(path + prefix + (i + 1).ToString() + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
                            }
                            else
                            if (imageType == "JPG")
                            {
                                vBmp.Save(path + prefix + (i + 1).ToString() + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
                            }
                            else
                            {
                                vBmp.Save(path + prefix + (i + 1).ToString() + ".png", System.Drawing.Imaging.ImageFormat.Png);
                            }
                        }
                    }
                }
            }
            finally
            {
                vPaintInfo.Dispose();
            }
        }
Exemple #3
0
        protected void DoSectionPaintFooterAfter(object sender, int pageIndex, RECT rect, HCCanvas canvas, SectionPaintInfo paintInfo)
        {
            HCSection vSection = sender as HCSection;

            if (vSection.PageNoVisible)
            {
                int vSectionIndex          = FSections.IndexOf(vSection);
                int vSectionStartPageIndex = 0;
                int vAllPageCount          = 0;
                for (int i = 0; i <= FSections.Count - 1; i++)
                {
                    if (i == vSectionIndex)
                    {
                        vSectionStartPageIndex = vAllPageCount;
                    }

                    vAllPageCount = vAllPageCount + FSections[i].PageCount;
                }

                string vS = string.Format(vSection.PageNoFormat, vSectionStartPageIndex + vSection.PageNoFrom + pageIndex, vAllPageCount);
                canvas.Brush.Style = HCBrushStyle.bsClear;

                canvas.Font.BeginUpdate();
                try
                {
                    canvas.Font.Size   = 10;
                    canvas.Font.Family = "宋体";
                }
                finally
                {
                    canvas.Font.EndUpdate();
                }

                canvas.TextOut(rect.Left + (rect.Width - canvas.TextWidth(vS)) / 2, rect.Top + vSection.Footer.Height, vS);
            }
        }