سلام
من به وسیله DrawLine یک سری خطوط در فرمم کشیدم ( یک فاکتور کشیدم) و یکسری label هم وسط این خط ها گزاشتم و می خوام از اون پرینت بگیرم.
1- این راه , راه منطقی و معمولی هست یا نه؟
2- اگه هست چه شکلی از اون پرینت بگیرم؟
Printable View
سلام
من به وسیله DrawLine یک سری خطوط در فرمم کشیدم ( یک فاکتور کشیدم) و یکسری label هم وسط این خط ها گزاشتم و می خوام از اون پرینت بگیرم.
1- این راه , راه منطقی و معمولی هست یا نه؟
2- اگه هست چه شکلی از اون پرینت بگیرم؟
راستی من وقتی کلیدهایی مثل alt,ctrl,start ...... میزنم اشکال گرافیکی که رسم شده پاک می شه ؟؟؟؟؟؟؟؟!!!!!!
سلام
شما میتوانید به کمک کلاسس PrintDocument با همان دستوراتی که با +GDI بر روی فرمتان رسم انجام میدهید، مستقیماً بر روی device پرنتر رسم انجام دهید.نقل قول:
من به وسیله DrawLine یک سری خطوط در فرمم کشیدم ( یک فاکتور کشیدم) و یکسری label هم وسط این خط ها گزاشتم و می خوام از اون پرینت بگیرم.
لازم به توضیح است که استفاده از کلاسس PrintDocument شاید کمی سخت و x و y دار باشد، ولی در زمان اجرا بسیار بسیار سریعتر از نمونه های MsReport و Crystal و... عمل میکند، چون بی واسطه ترین و مستقیم راه به پرینتر در دات نت است.
forum.p30world.com/showthread.php?t=247655
forum.p30world.com/showthread.php?t=137511
زمان نمایش را میگویید یا پرینت؟نقل قول:
... این راه , راه منطقی و معمولی هست یا نه؟
در زمان نمایش در فرم های برنامه، معمولاً برنامه نویسان خود را درگیر ترسیمات نمیکنند و از DataGrid یا انواع کنترلرهای آماده استفاده میکنند.
ولی اگر صلاح دیدی که ترسیم را مستقیم با PrintDocument انجام دهید، شاید نمایش آن هم به همین روش بد نباشد.
یعنی ان را مثل یک Preview از کاغذ واقعی بعد از چاپ نشان دهید، به عنوان Print Preview، حتی میتوانید از کنترلر PrintPreviewControl استفاده کنید و با یک کد و یک وراثت از PrintDocument هم در برنامه فاکتور را Preview کنید و هم برای عمل چاپ کد جدید ننویسید.
در زمان چاپ هم برای پشتیبانی راحت حالات پیچیده و کد نویسی سریع و امکان تبدیل ساده تر با توجه به نیازهای جدید، برنامه نویسان ابزار آماده و بصری مثل کریستال را ترجیح میدهند، چون آنها را در گیر دستورات زیاد و x و y های بسیار در +GDI نمیکند.
ولی اگر نمایه چاپی فاکتور ساده باشد، پرینت مستقیم با دستورات +GDI و به وسیله کلاسس PrintDocument بد نیست
اشکال را در چه رویدادی رسم میکنید؟ باید از رویداد Paint استفاده کنید، اگر هم طرح اشکال زیاد و رسم آنها سنگین و پر هزینه باشد، میتوانید DoubleBuffer را فعال کنید.نقل قول:
راستی من وقتی کلیدهایی مثل alt,ctrl,start ...... میزنم اشکال گرافیکی که رسم شده پاک می شه ؟؟؟؟؟؟؟؟!!!!!!
سلام
من کد زیر رو نوشتم ولی فقط یک صفحه خالی برام پرینت می گیره؟
اگه لطف کنید و ایرادامو بگید؟
می بخشید میشه از یک قسمت خاص از فرم مثلا از نقطه 100و100 تا نقطه 300و300 پرینت گرفتکد:private void button2_Click(object sender, EventArgs e)
{
this.printDocument1.PrintPage += new
System.Drawing.Printing.PrintPageEventHandler
(this.printDocument1_PrintPage);
printDocument1.Print();
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
jGraph = this.CreateGraphics();
jGraph.DrawLine(blackPen, 50, 50, 650, 50);
jGraph.DrawLine(blackPen, 50, 70, 650, 70);
jGraph.DrawLine(blackPen, 50, 50, 50, 650);
jGraph.DrawLine(blackPen, 650, 50, 650, 650);
jGraph.DrawLine(blackPen, 50, 650, 650, 650);
jGraph.DrawLine(blackPen, 500, 50, 500, 650);
}
سلام
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!نقل قول:
jGraph = this.CreateGraphics();
اینطوری شما روی فرم ترسیم میکنید، چگونه میخواهید دستور CreateGraphics را اجرا کنید و پرده رسم فرم را بگیرید، ولی روی پرینتر ترسیم شود؟؟؟؟
شما باید از مقادیر ارسال شده در پارامتر e ورودی استفاده کنید. مثل e.Graphics
میشود یک کارهایی کرد، حتی خود مایکروسافت هم سرش درد گرفته از این سوالات و یک بسته الحاقی که شامل پرینت از فرم است داده.نقل قول:
می بخشید میشه از یک قسمت خاص از فرم مثلا از نقطه 100و100 تا نقطه 300و300 پرینت گرفت
ولی عمل فوق جالب توجه نیست، چون
1- اصولی نیست میبخشید ولی یک نوع ماست مالی برنامه نویسی است!
2- dpi مانیتور 72 یا 96 در حالی که یک پرینت با کیفیت باید 300dpi باشد.
مرسی h2 جان از جوابهای سریع عالی و مفیدت مچکرم.خدا تورو برای این فرم و ما نگه داره انشاا....
امیدوارم سر شما مثل برو و بچ ماکروسافت درد نگیره از اینهمه سوال.
موفق و سربلند باشی