نمایش نتایج: از شماره 1 تا 3 از مجموع 3

موضوع: پرینت گرفتن از تمام فرم در سی شارپ؟


  1. نمایش اطلاعات
    #1

    پیش فرض پرینت گرفتن از تمام فرم در سی شارپ؟

    خواهشا اگه کسی میدونه کمکم کنه.
    چجوری میشه از تمام یه فرم پرینت بگیرم؟
    پرینت از لیبل ئ تکست باکس رو میدونم اما میخوام ازکل پنجره ی فرم پرینت بگیرم اخه فرمت بیست سی تا لیبل وتکست باکس داره


  2. نمایش اطلاعات
    #2

    پیش فرض

    Rectangle bounds = Screen.GetBounds(Point.Empty);
    using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
    {
    using (Graphics g = Graphics.FromImage(bitmap))
    {
    g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
    }
    bitmap.Save("c://My_Img.jpg", ImageFormat.Jpeg);
    }


    اگر سی شارپت ضعیفه اینجا آموزش های خوبی داره
    هولایتی | دانلود فیلم آموزشی

  3. نمایش تشکر

  4. عضو ممتاز
    نمایش اطلاعات
    #3

    پیش فرض

    نوشته اصلی توسط mousadebuger
    Rectangle bounds = Screen.GetBounds(Point.Empty);
    using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
    {
    using (Graphics g = Graphics.FromImage(bitmap))
    {
    g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
    }
    bitmap.Save("c://My_Img.jpg", ImageFormat.Jpeg);
    }


    اگر سی شارپت ضعیفه اینجا آموزش های خوبی داره
    هولایتی | دانلود فیلم آموزشی
    جناب mousadebuger متاسفانه پاسخ شما اشتباه هست.
    کد شما یک تصویر از کل صفحه ی نمایش (نه از فرم ) میگیره و در فایلی بنام c:\My_Img.jpg
    ذخیره میکنه.و هیچ چیزی را هم چاپ نمیکنه.! ( فکر کنم عجله داشتین و سوال دوستمون را
    درست متوجه نشدین)
    اگر قصدا دارید که از فرم یک تصویر ایجاد کنید باید بجای
    Screen.GetBounds که Bound کل صفحه ی نمایش را برمیگردونه از this.Bounds استفاده کنید (چون ممکنه فرم کوچکتر از کل صفحه ی نمایش باشه) ، همچنین برای چاپ هم میتونین از کامپوننتی نظیر PrintDocument و یا از توابع API استفاده کنید ، پاسخ صحیح را به هر دوروش قرار میدم :

    روش اول برای #C :

    کد:
    using System;
    using System.Windows.Forms;
    using System.Drawing;
    using System.Drawing.Printing;
    
    public class Form1 :
        Form
    {
        private Button printButton = new Button();
        private PrintDocument printDocument1 = new PrintDocument();
    
        public Form1()
        {
            printButton.Text = "Print Form";
            printButton.Click += new EventHandler(printButton_Click);
            printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
            this.Controls.Add(printButton);
        }
    
        void printButton_Click(object sender, EventArgs e)
        {
            CaptureScreen();
            printDocument1.Print();
        }
    
    
        Bitmap memoryImage;
    
        private void CaptureScreen()
        {
            Graphics myGraphics = this.CreateGraphics();
            Size s = this.Size;
            memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
            Graphics memoryGraphics = Graphics.FromImage(memoryImage);
            memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);
        }
    
        private void printDocument1_PrintPage(System.Object sender,  
               System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawImage(memoryImage, 0, 0);
        }
    
    
    
        public static void Main()
        {
            Application.Run(new Form1());
        }
    }


    روش دوم :
    کد:
    
    
    کد:
    System.Runtime.InteropServices.DllImport("gdi32.dll")
    public static extern long BitBlt (IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
    private Bitmap memoryImage;
    private void CaptureScreen()
    {
       Graphics mygraphics = this.CreateGraphics();
       Size s = this.Size;
       memoryImage = new Bitmap(s.Width, s.Height, mygraphics);
       Graphics memoryGraphics = Graphics.FromImage(memoryImage);
       IntPtr dc1 = mygraphics.GetHdc();
       IntPtr dc2 = memoryGraphics.GetHdc();
       BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 0, 0, 13369376);
       mygraphics.ReleaseHdc(dc1);
       memoryGraphics.ReleaseHdc(dc2);
    }
    private void printDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
       e.Graphics.DrawImage(memoryImage, 0, 0);
    }
    private void printButton_Click(System.Object sender, System.EventArgs e)
    {
       CaptureScreen();
       printDocument1.Print();
    }
    



    و برای VB :
    کد:
    
    
    کد:
    Imports System.Windows.Forms
    Imports System.Drawing
    Imports System
    Imports System.Drawing.Printing
    
    Public Class Form1
        Inherits Form
        Private WithEvents printButton As New Button
        Private WithEvents printDocument1 As New PrintDocument
    
        Public Sub New()
            printButton.Text = "Print Form" 
            Me.Controls.Add(printButton)
        End Sub 
    
        Dim memoryImage As Bitmap
    
        Private Sub CaptureScreen()
            Dim myGraphics As Graphics = Me.CreateGraphics()
            Dim s As Size = Me.Size
            memoryImage = New Bitmap(s.Width, s.Height, myGraphics)
            Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
            memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s)
        End Sub 
    
        Private Sub printDocument1_PrintPage(ByVal sender As System.Object, _
           ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
           printDocument1.PrintPage
            e.Graphics.DrawImage(memoryImage, 0, 0)
        End Sub 
    
        Private Sub printButton_Click(ByVal sender As System.Object, ByVal e As _
           System.EventArgs) Handles printButton.Click
            CaptureScreen()
            printDocument1.Print()
        End Sub 
    
        Public Shared Sub Main()
            Application.Run(New Form1())
        End Sub 
    End Class
    نمایش امضاء

  5. نمایش تشکر

اطلاعات تاپیک

Users Browsing this Thread

در حال حاضر 1 در حال مشاهده این موضوع می باشد.. (0 کاربر و 1 مهمان در این انجمن حضور دارند)

برچسب برای این موضوع

بوک مارک ها

بوک مارک ها

مجوزهای ارسال و ویرایش

  • شما نمی توانید موضوع جدید ارسال کنید
  • شما نمی توانید به پست ها پاسخ دهید
  • شما نمی توانید فایل پیوست ضمیمه کنید
  • شما نمی توانید پست های خود را ویرایش کنید
  •