PDA

View Full Version : روش پرینت گرفتن از فرم خام



forodo
شنبه 08 تیر 1392, 09:36 صبح
سلام
این کد برای پرینت گرفتن است ولی موقع پرینت کل صفحه A4 را نمی گیرد.
چطور می توانم سایز پرینت را مشخص کنم که مثلاً کل A4 یا A5 پرینت بگیرد؟؟؟

namespace


WindowsFormsApplication2

{



public partial class Form1 : Form

{



public Form1()

{

InitializeComponent();

}



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(object sender, System.Drawing.Printing.PrintPageEventArgs e)

{

e.Graphics.DrawImage(memoryImage, 0, 0);

}



private void button1_Click(object sender, EventArgs e)

{

CaptureScreen();

printDocument1.Print();

}



private void Form1_Load(object sender, EventArgs e)

{



// TODO: This line of code loads data into the 'RadmanDataSet.tblLetter' table. You can move, or remove it, as needed.



this.tblLetterTableAdapter.Fill(this.RadmanDataSet .tblLetter);



this.reportViewer1.RefreshReport();

}

}

}

forodo
دوشنبه 10 تیر 1392, 07:57 صبح
لطفاً یکی راهنمایی کند!!!

forodo
دوشنبه 10 تیر 1392, 09:44 صبح
می خوام این جوری پرینت بگیرم که به جای اندازه فرم که روی برگه A4 می افته کل A4 رو پر کنه.
یکی جواب بده.

forodo
دوشنبه 10 تیر 1392, 09:48 صبح
یه کده دیگه پیدا کردم که کمتر از بالاییه.

private void btnPrint_Click(object sender, EventArgs e)
{
printDialog1.ShowDialog();
printDocument1.Print();
}






private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Bitmap b = newBitmap(this.panel1.Width, this.panel1.Height);
this.panel1.DrawToBitmap(b, newRectangle(0, 0, this.panel1.Width, this.panel1.Height));
e.Graphics.DrawImage(b, new Point(0, 0));
}

forodo
دوشنبه 10 تیر 1392, 10:24 صبح
می دونم چرا جواب نمی دید.
دارید پیش خودتون می گید که جاهای دیگه تالار این کدها هست ولی اون چیزی که من می خوام نداره.
یه PrintOption.PaperSize پیدا کردم که بتونم برابر A4 قرارش بدم ولی PaperSize رو نمی شناسه انگار این کد مخصوص VB هستش.
لطفاً سریعتر یکی به من کمک کنه نیاز دارم فوراً.
اقلاً اگه نمیشه اونجوری کرد بشه موقع زدن دکمه در قسمت new Point(0, 0 بشه یه عددی زد که در قسمت بالای صفحه به جای اینکه عکس بال سمت چپ بیافته بالا وسط بیافته.
با تشکر

Mahmoud.Afrad
دوشنبه 10 تیر 1392, 10:55 صبح
در رویداد PrintPage اندازه مبدا و مقصد رو تعیین کنید:

Bitmap bmp;
private void CaptureScreen()
{
Graphics myGraphics = this.CreateGraphics();
bmp = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(bmp, new Rectangle(0, 0, this.Width, this.Height));
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
int newWidth = (int)printDocument1.DefaultPageSettings.PrintableA rea.Width;
int newHeight = Convert.ToInt32((double)newWidth / bmp.Width * Height);
e.Graphics.DrawImage(bmp,
new Rectangle(0, 0, newWidth, newHeight),
new Rectangle(0, 0, bmp.Width, bmp.Height),
GraphicsUnit.Pixel);
}

forodo
دوشنبه 10 تیر 1392, 11:59 صبح
داداش دمت گرم که کارم خفن راه افتاد.
خیلی ممنون