السلام عليكــم ورحمـة الله وبركاتــه ،،
اخواني كيف اعطي للكائن Print Doucment نص لكي يتم ظهوره في الكائن Print Preview Control ؟ وكيف أتحكم بهوامش الصفحة ؟
السلام عليكــم ورحمـة الله وبركاتــه ،،
اخواني كيف اعطي للكائن Print Doucment نص لكي يتم ظهوره في الكائن Print Preview Control ؟ وكيف أتحكم بهوامش الصفحة ؟
فلسطين .. سوريا ..بورما ......وماذا بعد ؟!
سابقا
medo_programming
موقعي : www.alkhayat-it.com
مواضيع مهمه
-----------------------------------------------:
لرسم نص على الكنترول PrintDocument نحتاج أول شيء لاشتراك في الحدث PrintDocument.PrintPage. مثال :
pDoc.PrintPage += new PrintPageEventHandler(pDoc_PrintPage);
يمكن القيام بهذه العملية باختيار الكنترول PrintDocument, الإنتقال إلى نافدة الخصائص ثم النقر مرتين على الحدث PrintPage
الخطوة الثالية هي رسم النص. و نقوم بهذه العملية داخل الدالة التي ستتم المناداة عليها عند الحدث PrintPage و التي تكون في العادة على الشكل التالي :
void PrintDocumentName_PrintPage(object sender, PrintPageEventArgs e)
و لتشغيل رسم النص, ننادي على الدالة PrintPage.Print();
هذا كود مبسط لعملية طبع نص على الطابع باستعمال الكنترول PrintDocument :
using System.Drawing;
using System.Drawing.Printing;
namespace ConsoleApplication1
{
class Program
{
static PrintDocument pDoc = null;
static void Main(string[] args)
{
// الكائن المستعمل للطباعة
pDoc = new PrintDocument();
// اشتراك في الحدث
pDoc.PrintPage += new PrintPageEventHandler(pDoc_PrintPage);
// تشغيل الطباعة
pDoc.Print();
// تنظيف المكان قبل الخروج
pDoc.Dispose();
}
static void pDoc_PrintPage(object sender, PrintPageEventArgs e)
{
// النص المراد طباعته
string s = "Sample text\n\rSample text\n\retc.";
// نوع الرسم المستعمل لطباعة النص
Font f = new Font("Arial", 12.0f);
// تحديد المربع الذي ستتم الطباعة داخله على الورقة
RectangleF rc = e.PageSettings.Bounds;
// Margins وسيلة سهلة لتحديد
rc.X += 100;
rc.Width -= rc.X * 2;
rc.Y += 100;
rc.Height -= rc.Y * 2;
// رسم النص
e.Graphics.DrawString(s, f, Brushes.Black, rc);
// تنظيف المكان قبل الخروج
f.Dispose();
}
}
}تحياتي...
أخي العزيز هل يجب ان اتعلم GDI+ لكي أفهم الكود وأقدر أعدل عليه ؟
فلسطين .. سوريا ..بورما ......وماذا بعد ؟!
سابقا
medo_programming
موقعي : www.alkhayat-it.com
مواضيع مهمه
-----------------------------------------------:
على ما يبدو أن كل كلاسات GDI+ موجودة أو مفعلة على إطار دوت نت. ما يجب معرفته أن كل عمليات الرسم على سطح الرسم تمر عبر المناداة على دوال الرسم للكائن Graphics. وفي المثال الذي قدمته فالمناداة على الدالة pDoc.Print() تبدأ عملية الطباعة و عندما يحين موعد طباعة الصفحة تتم المناداة على الدالة المشتركة في الحدث PrintDocument.PrintPage و يضع النظام رهن إشارتك الكائن Graphics الموجود داخل الكائن e للرسم على سطح الرسم و الذي يمثل الصفحة التي ستبدأ عملية طباعتها بمجرد الخروج من الدالة pDoc_PrintPage.
لتشغيل المثال, قم بتشغيل VC# ثم قم بإنشاء مشروع WindowsConsoleApplication جديد و على صفحة الكود التي ستظهر قم بلصق نص المثال ثم اضغط على الزر F5.
تحياتي...