PDA

View Full Version : سوال: رابطه بین پیکسل، سانتی متر و رزولوشن تصویر



amin_sltny
دوشنبه 29 دی 1393, 14:04 عصر
سلام.

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

در برنامه من عکسی با Bitmap ایجاد میی شود و رزولوشن آن به صورت زیر تنظیم میشه:

bmp.SetResolution(300.0F, 300.0F);



حالا می خوام با یک شی از نوع گرافیک (graphics) در اون خط ها و نوشته هایی ایجاد کنم. کاربر اطلاعات را به سانتی متر وارد کنه و من آن ها را به پیکسل تبدیل کنم. این را می دونم که هر سانتی متر برابر 2.54 اینچ هست و هر اینچ هم 96 پیکسل هست. می خواستم بتونم رابطه آن ها با رزولوشنی که من در بالا تنظیم می کنم چیه و با لحاظ رزولوشن فرمول محاسبه من چی میشه؟؟؟

ممنون

amin_sltny
دوشنبه 29 دی 1393, 18:53 عصر
سلام.

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

در برنامه من عکسی با Bitmap ایجاد میی شود و رزولوشن آن به صورت زیر تنظیم میشه:

bmp.SetResolution(300.0F, 300.0F);



حالا می خوام با یک شی از نوع گرافیک (graphics) در اون خط ها و نوشته هایی ایجاد کنم. کاربر اطلاعات را به سانتی متر وارد کنه و من آن ها را به پیکسل تبدیل کنم. این را می دونم که هر سانتی متر برابر 2.54 اینچ هست و هر اینچ هم 96 پیکسل هست. می خواستم بتونم رابطه آن ها با رزولوشنی که من در بالا تنظیم می کنم چیه و با لحاظ رزولوشن فرمول محاسبه من چی میشه؟؟؟

ممنون

یه سوال دیگه هم داشتم. من می خوام با سی شارپ یه گزارش بسازم که کارت عضویت را چاپ کنه. با استفاده از bitmap یه تصویر مثلا 8 سانتی متری در 4.5 سانتی متری ایجاد کردم . با استفاده از کلاس graphics نوشته هامو نوشتم.

وقتی چاپش می کنم کل برگه A4 چاپ میشه یعنی در واقع در 8 سانتی متر در4.5 چاپ نمیشه و کل صفحه را میگیره. باید چکارش کنم:



PrintDocument pd = new PrintDocument();
PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
PrinterSettings printersetting = new PrinterSettings();


pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
pd.DocumentName = "کارت عضویت";
printPreviewDialog1.Document = pd;
pd.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);
pd.DefaultPageSettings.PaperSize = new PaperSize("Card",CmToPx((double)card_Width.Value) , CmToPx((double)card_Height.Value));
printPreviewDialog1.ShowDialog();



return;
{




private void pd_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawImage(bmIm, 0, 0, bmIm.Width, bmIm.Height);
}


کد تولید تصویر:



System.Drawing.Size imageSize = new System.Drawing.Size(CmToPx((double)card_Width.Valu e), CmToPx((double)card_Height.Value));
Bitmap bmp = new Bitmap(imageSize.Width, imageSize.Height);
bmp.SetResolution(300.0F, 300.0F);
Graphics graphic = Graphics.FromImage(bmp);




SolidBrush brush = new SolidBrush(Color.Transparent);
graphic.FillRectangle(brush, 0, 0, imageSize.Width, imageSize.Height);


if (ChBackGround.Checked)
{


float x = (float)CmToPx((double)Card_Left.Value);
float y = (float)CmToPx((double)Card_Top.Value);
int width = imageSize.Width - (2 * CmToPx((double)Card_Left.Value));
int height = imageSize.Height - (2 * CmToPx((double)Card_Top.Value));
graphic.DrawImage(Image.FromFile(Application.Start upPath + "//CARTKANON FRONTPAGE.jpg"), x, y, width, height);


}
brush = new SolidBrush(Color.Black);
if(ch_Ozviat.Checked)
{
graphic.DrawString(txt_Ozviat.Text, printFont, brush, new PointF((float)imageSize.Width - (float)CmToPx((double)ozviat_R.Value), (float)CmToPx((double)ozviat_T.Value)));
}


if (ch_NameAndFamily.Checked)
{
graphic.DrawString(txt_NameFamily.Text, printFont, brush, new PointF((float)imageSize.Width - (float)CmToPx((double)NameFamily_R.Value), (float)CmToPx((double)NameFamily_T.Value)));
}


if (ch_Father.Checked)
{
graphic.DrawString(txt_FatherName.Text, printFont, brush, new PointF((float)imageSize.Width - (float)CmToPx((double)Father_R.Value), (float)CmToPx((double)Father_T.Value)));
}


if (ch_Codemeli.Checked)
{
graphic.DrawString(txt_CodeMeli.Text, printFont, brush, new PointF((float)imageSize.Width - (float)CmToPx((double)CodeMeli_R.Value), (float)CmToPx((double)CodeMeli_T.Value)));
}


if (ch_Ozviat.Checked)
{
graphic.DrawString(txt_Ozviat.Text, printFont, brush, new PointF((float)imageSize.Width - (float)CmToPx((double)ozviat_R.Value), (float)CmToPx((double)ozviat_T.Value)));
}


if (ch_Ozviat.Checked)
{
graphic.DrawString(txt_Ozviat.Text, printFont, brush, new PointF((float)imageSize.Width - (float)CmToPx((double)ozviat_R.Value), (float)CmToPx((double)ozviat_T.Value)));
}


if(ch_Picture.Checked)
{
Bitmap userImage = new Bitmap(Image.FromFile(Application.StartupPath + "//User-icon.png"), (int)CmToPx((double)Pic_Width.Value), (int)CmToPx((double)Pic_Height.Value));
graphic.DrawImage(userImage, new PointF((float)imageSize.Width - (float)CmToPx((double)Pic_R.Value), (float)CmToPx((double)Pic_T.Value)));
}
pictureBox1.Image = bmIm = bmp;