PDA

View Full Version : سوال: مشکل پرینت گرفتن از تصویر ذخیره شده در دیتابیس



ro3vayedel
پنج شنبه 17 خرداد 1397, 20:15 عصر
با سلام خدمت دوستان
بنده تصاویر را توی بانک اطلاعاتی SQL Server بصورت image ذخیره کردم
الان میخوام بفرستمشون به پرینت و دقیقا به اندازه یک برگ A4 پرینت گرفته بشن چون تصاویرم اسکن شده برگهای a4 هست و بصورت raw ذخیره شدن اما حالا که توی picturebox میارمش و میفرستم واسه پرینتر یکطرف کاغذ میفته و نصف کاغذ خالی میمونه
اگر میشه کد ارسال به پرینتر با سایز A4 را واسم بنویسید؟؟

danialafshari
پنج شنبه 17 خرداد 1397, 21:10 عصر
با سلام
شما بایستی کدتون رو قرار میدادید تا بررسی بشه
برای پرینت Picturebox می تونید از Name Space روبرو System.Drawing.Printing و کلاس PrintDocument استفاده کنید

System.Drawing.Printing.PrintDocument printDocument1 = new System.Drawing.Printing.PrintDocument();
printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(prin tDocument1_PrintPage);
printDocument1.Print();


private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(pictureBox1.Image, 0, 0);
}

توسط ابزار های گزارشگیری مانند StimulReport, FastReport , ... هم میشه اینکار رو کرد
موفق باشید

ro3vayedel
جمعه 18 خرداد 1397, 00:46 صبح
با سلام
شما بایستی کدتون رو قرار میدادید تا بررسی بشه
برای پرینت Picturebox می تونید از Name Space روبرو System.Drawing.Printing و کلاس PrintDocument استفاده کنید

System.Drawing.Printing.PrintDocument printDocument1 = new System.Drawing.Printing.PrintDocument();
printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(prin tDocument1_PrintPage);
printDocument1.Print();


private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(pictureBox1.Image, 0, 0);
}

توسط ابزار های گزارشگیری مانند StimulReport, FastReport , ... هم میشه اینکار رو کرد
موفق باشید


اینم از کدی که استفاده کردم

private void btnPrint_Click(object sender, EventArgs e)
{
PrintDialog pd = new PrintDialog();
printDocument doc = new printDocument();
doc.PrintPage += doc_PrintPage;
pd.Document = doc;
if (pd.ShowDialog()==DialogResult.OK)
{
doc.Print();
}

}

void doc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Bitmap bm = new Bitmap(pictureBox1.Width, pictureBox1.Height);
pictureBox1.DrawToBitmap(bm, new Rectangle(0, 0,pictureBox1.Width, pictureBox1.Height));
e.Graphics.DrawImage(bm, 0,0);
bm.Dispose();
}

ro3vayedel
جمعه 18 خرداد 1397, 01:22 صبح
آقا مرسی مشکلم حل شد .
مشکل از این بود که خیلی داشتم سختش میکردم .
اصلا نیاز به ایجاد bitmap و تبدیل picturebox به یک bitmap و ... نبود.
هم اینکه با روشی که قبلا استفاده کرده بودم به شدت کیفیت تصویرم پایین اومده بود.
اما با نسبت دادن مستقیم picturebox به e.Graphic.DrawImage هم مشکل سایز خودبخود حل شد و هم کیفیت فوق العاده بالا رفت یعنی مثل فایل اورجینال شد.

مرسی.
نتیجه رو نوشتم تا شاید بعضی از دوستان به مشکل بنده برخورد بکنن .
و ممنون از دوست خوبمون که در این امر کمک کرد به بنده.