Programim dhe zhvillim, javascript, python, php, html

Si të printoni dritaren me gjerësi të plotë nga forma C#.?

Po përpiqem të printoj formularin e plotë, por dokumenti i printimit nuk mbulon gjerësinë e plotë. Kam provuar mënyra të ndryshme, por nuk kam marrë rezultatin e dëshiruar. Kam marrë ndihmë nga kjo lidhje https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/how-to-print-a-windows-form

Kjo është gjysma e printimit që po marr Ky është rezultati që po marr

Këtu është formulari i plotë që dua të printoj Ky është formulari i plotë që dua ta printoj plotësisht

Ju lutem më tregoni se si mund të printoj formularin e plotë. Faleminderit paraprakisht

31.07.2020

  • Provoni me DrawToBitmap() ( kodi që gjetët në MSDN Docs nuk është saktësisht i ndërtuar mirë). Nëse dëshironi të printoni vetëm përmbajtjen e Formularit (madje edhe të gjithë përmbajtjen, duke përfshirë atë që nuk është e dukshme ose e pa lëvizur në pamje), provoni këtë klasë: Si të përdorni PrintDocument me një panel të lëvizshëm?. Ai nuk përfshin kufijtë e një forme. 31.07.2020
  • Faleminderit, do ta provoj 31.07.2020
  • CopyFromScreen dërgon atë që është në ekranin tuaj në printer dhe kjo rrallë është ajo që dëshironi. Në vend të kësaj, krijoni një metodë të dytë Paint, ose abstraktoni metodën tuaj të formës paint, për të tërhequr rezultatin tuaj në dimensionet, rezolucionin dhe faqet e printerit. Konsultohuni me Si të printoni të gjithë formularin? 01.08.2020

Përgjigjet:


1

Nuk jam i sigurt për lidhjen që po ndiqni, po merrja të njëjtin gabim edhe pasi provova kode të shumta ndërsa po përpiqesha të printoja një herë të gjithë formularin. Pastaj gjeta kodin më poshtë diku në internet, i cili printon të gjithë formën.

    private System.IO.Stream streamToPrint;
    string streamType;
    PrintDocument printDoc = new PrintDocument();
    [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
    private static extern bool BitBlt
    (
        IntPtr hdcDest, // handle to destination DC  
        int nXDest, // x-coord of destination upper-left corner  
        int nYDest, // y-coord of destination upper-left corner  
        int nWidth, // width of destination rectangle  
        int nHeight, // height of destination rectangle  
        IntPtr hdcSrc, // handle to source DC  
        int nXSrc, // x-coordinate of source upper-left corner  
        int nYSrc, // y-coordinate of source upper-left corner  
        System.Int32 dwRop // raster operation code  
    );
    private void printDoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        System.Drawing.Image image = System.Drawing.Image.FromStream(this.streamToPrint);
        int x = e.MarginBounds.X;
        int y = e.MarginBounds.Y;
        int width = image.Width;
        int height = image.Height;
        if ((width / e.MarginBounds.Width) > (height / e.MarginBounds.Height))
        {
            width = e.MarginBounds.Width;
            height = image.Height * e.MarginBounds.Width / image.Width;
        }
        else
        {
            height = e.MarginBounds.Height;
            width = image.Width * e.MarginBounds.Height / image.Height;
        }
        System.Drawing.Rectangle destRect = new System.Drawing.Rectangle(x, y, width, height);
        e.Graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, System.Drawing.GraphicsUnit.Pixel);
    }
    private void btnPrintDoc_Click(object sender, EventArgs e)
    {
        Graphics g1 = this.CreateGraphics();
        System.Drawing.Image MyImage = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height, g1);
        Graphics g2 = Graphics.FromImage(MyImage);
        IntPtr dc1 = g1.GetHdc();
        IntPtr dc2 = g2.GetHdc();
        BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 0, 0, 13369376);
        g1.ReleaseHdc(dc1);
        g2.ReleaseHdc(dc2);
        MyImage.Save(@"D:\PrintPage.jpg", ImageFormat.Jpeg);
        FileStream fileStream = new FileStream(@"D:\PrintPage.jpg", FileMode.Open, FileAccess.Read);
        StartPrint(fileStream, "Image");
        fileStream.Close();
    }
    public void StartPrint(Stream streamToPrint, string streamType)
    {
        this.printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
        this.streamToPrint = streamToPrint;
        this.streamType = streamType;
        System.Windows.Forms.PrintDialog PrintDialog1 = new PrintDialog();
        PrintDialog1.AllowSomePages = true;
        PrintDialog1.ShowHelp = true;
        PrintDialog1.Document = printDoc;
        DialogResult result = PrintDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            printDoc.Print();
            //docToPrint.Print();  
        }
    }    
31.07.2020
  • Faleminderit. do ta provoj 31.07.2020

  • 2

    Nëse dëshironi të rregulloni madhësinë kur fillon Forma, mund ta provoni këtë, miku im. Ose Kur klikoni butonin e printimit, disa kontrolle shtohen në formularin tuaj, thjesht mund të telefononi funksionin SizeFix në fund të funksionit të ngjarjes së klikimit të butonit të printimit në vend që të krijoni ngjarje ngarkese.

            public Form1()
            {
                InitializeComponent();
                this.Load += new EventHandler(SizeFix);
            }
    
    
            public void SizeFix(object o, EventArgs e)
            {
                int widthMax = this.Width;
                foreach (var item in this.Controls)
                {
                    int tempWitdh = (item as Control).Location.X + (item as Control).Width;
                    if (tempWitdh > widthMax)
                    {
                        widthMax = tempWitdh;
                    }
                }
    
                this.Width = widthMax;  // You can add 10 width more
            }
    
    31.07.2020
    Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..