PDA

View Full Version : تنظیم اندازه کاغذ برای چاپ در حالت Graphics



siyavash_ghanbari
جمعه 20 آذر 1388, 12:05 عصر
با سلام.
من با روش Graphics می خوام یکسری عناصر رو چاپ بگیرم.
اما کاغذی که من دارم بطور مثال 5x8 سانتی متر هست !
نمی خوام با گذاشتن برگه در وسط چاپگر مشکلم رو حل کنم.
چطور باید به چاپگر بفهمونم که کاغذ خروجی من چه اندزه ای است ؟
در ضمت من از PrintDocument و ... استفاده می کنم.
با تشکر فراوان.

sunn789
جمعه 20 آذر 1388, 13:48 عصر
if (!printDoc.DefaultPageSettings.Landscape)
{
paperSize.Height = 827;
paperSize.Width = 1169;
}
else
{
paperSize.Width = 827;
paperSize.Height = 1169;
}

siyavash_ghanbari
شنبه 21 آذر 1388, 01:17 صبح
هنوز مشکل دارم ، لطفا کمک کنید !
هیج جا (حتی تو msdn) هم اینو درست توضیح نداده !

اولا paperSize که نوشتید ، خاصیت printDoc هست ؟
اگه اینطوره ، این حالت اررور میده، اینم خطا:

PaperSize cannot be changed unless the Kind property is set to Custom.

خب چطور kind رو Custom تنظیم کنم ، وقتی read-only هست ؟؟؟

sunn789
شنبه 21 آذر 1388, 20:44 عصر
خوب برا این کار ابتدا بیرون از متد میتونی اینجوری تعریف کنی/

private PaperSize paperSize = new PaperSize();
بد از اون هم

public PrintClass0(bool landscape, DataGridView dgv, bool IsWithPaging,string headerText,string subHeaderText)
{
prnDocument.DefaultPageSettings.PaperSize = paperSize;
prnDocument.PrintPage += new PrintPageEventHandler(prnDocument_PrintPage);
if (!prnDocument.DefaultPageSettings.Landscape)
{
paperSize.Height = 827;
paperSize.Width = 1169;
}
else
{
paperSize.Width = 827;
paperSize.Height = 1169;
}

}

با این کد امیدوارم مشکتون حل شه اگه به مشکل برخوردین بفرمایید

siyavash_ghanbari
شنبه 21 آذر 1388, 22:42 عصر
با سلام ، بازم مشکل ! (خطا نداره ولی اعمال نمیکنه !)
اصلا این کد رو ببینین یه دکمه دارم که با زدنش یه متن چاپ میشه :


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private PaperSize paperSize = new PaperSize();
private void button1_Click(object sender, EventArgs e)
{
pd.DefaultPageSettings.PaperSize = paperSize;
pd.PrintPage += new PrintPageEventHandler(prnDocument_PrintPage);
if (!pd.DefaultPageSettings.Landscape)
{
paperSize.Height = 127;
paperSize.Width = 269;
}
else
{
paperSize.Width = 127;
paperSize.Height = 129;
}
pd.Print();
}
public void prnDocument_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString("welcome", new Font("Arial", 64, FontStyle.Regular), Brushes.Blue, new PointF(0, 0));
}
}

اشتباست ؟ (نیاز فوری دارم !!!!) :افسرده:

siyavash_ghanbari
یک شنبه 22 آذر 1388, 12:57 عصر
اصلا PaperSize اندازه کاغذ نیست !
PrintableArea هست که چاپ میشه (اندازه کاغذه) ، اما نمیشه اونو تغییر داد :افسرده:.
چیکار کنم ؟؟؟؟؟؟؟؟؟؟؟

siyavash_ghanbari
یک شنبه 22 آذر 1388, 13:00 عصر
اصلا میشه یه سایز دلخواه که جز استدارد ها (PaperKind) نباشه رو تعریف کرد و در تمامی چاپگر ها اونو چاپ گرفت ؟ مثل 12cm در 2cm ؟؟؟؟؟؟
واقعا تا حالا هیچ برنامه نویسی چنین کاری نکرده ؟