PDA

View Full Version : سوال: نمایش اعداد فارسی در picture box



mh3242
دوشنبه 30 تیر 1393, 01:40 صبح
سلام دوستان
یه picture box دارم که توش عکس هست و میخوام رو عکس یه سری اعداد فارسی بنویسم. کدها هم به این صورته:


Graphics g = pictureBox1.CreateGraphics();
g.DrawString("1234", new Font("Tahoma", 20), Brushes.Black, new RectangleF(new Point(100, 100), new Size(100, 100)));


اما خب همه میدونین که فارسی نمینویسه و انگلیسی هستش.
با تغییر culture رشته میشه این کار رو انجام داد؟
اگه آره چجوری؟
اگه هم نه راه دیگه ای وجود داره؟
یا اصلا روش انجام این کار چیه؟

khokhan
دوشنبه 30 تیر 1393, 02:54 صبح
سلام دوستان
یه picture box دارم که توش عکس هست و میخوام رو عکس یه سری اعداد فارسی بنویسم. کدها هم به این صورته:


Graphics g = pictureBox1.CreateGraphics();
g.DrawString("1234", new Font("Tahoma", 20), Brushes.Black, new RectangleF(new Point(100, 100), new Size(100, 100)));


اما خب همه میدونین که فارسی نمینویسه و انگلیسی هستش.
با تغییر culture رشته میشه این کار رو انجام داد؟
اگه آره چجوری؟
اگه هم نه راه دیگه ای وجود داره؟
یا اصلا روش انجام این کار چیه؟

.................................................. ..


private void pictureBox1_Paint(object sender, PaintEventArgs e) {

string drawString = "12345678" + "\n" + "\n" + "زیبایی در سادگی";

SolidBrush drawBrush = new SolidBrush(Color.Black);

RectangleF rec = new RectangleF(20, 20, pictureBox1.Width-50, pictureBox1.Height);

StringFormat drawFormat = new StringFormat();
drawFormat.FormatFlags = StringFormatFlags.DirectionRightToLeft;

e.Graphics.DrawString(drawString, Font, drawBrush, rec, drawFormat);
}


121345

khokhan
دوشنبه 30 تیر 1393, 03:05 صبح
و ایضا کما فی تالیه :


private void pictureBox1_Paint(object sender, PaintEventArgs e) {
StringFormat drawFormat = new StringFormat();
System.Globalization.CultureInfo eg = new System.Globalization.CultureInfo("ar-EG");


drawFormat.SetDigitSubstitution(eg.LCID, StringDigitSubstitute.National);


Font drawFont = new Font("Tahoma", 16);
SolidBrush drawBrush = new SolidBrush(Color.Black);


e.Graphics.DrawString("امسال سال 1393", drawFont, drawBrush, 10F, 10F, drawFormat);


}

mh3242
دوشنبه 30 تیر 1393, 05:20 صبح
اون مشکل با کمک دوستمون حل شد اما الان یه اتفاق مسخره می افته!!!
این کدی هستش که استفاده میکنم:


PictureBox.ImageLocation = @"D:\1.jpg";
PictureBox.SizeMode = PictureBoxSizeMode.StretchImage;
Graphics g = PictureBox.CreateGraphics();
string drawString = "12345678" + "\n" + "\n" + "زیبایی در سادگی";
SolidBrush drawBrush = new SolidBrush(Color.Red);
RectangleF rec = new RectangleF(20, 20, PictureBox.Width - 50, PictureBox.Height);
StringFormat drawFormat = new StringFormat();
drawFormat.FormatFlags = StringFormatFlags.DirectionRightToLeft;
g.DrawString(drawString, new Font("Tahoma", 20), drawBrush, rec, drawFormat);


قضیه اینه که تو یه کسری از ثانیه رشته رو نمایش میده بعدش عکس رو تو picturebox قرار میده بعدشم رشته ناپدید میشه!!!
کسی می دونه چرا اینجوری میشه؟

mh3242
دوشنبه 30 تیر 1393, 05:22 صبح
البته کد ها تو رویداد کلیک button هستن

abbas.oveissi
دوشنبه 30 تیر 1393, 08:35 صبح
البته کد ها تو رویداد کلیک button هستن
احتمالا مشکل از این هست که موجودیت Graphic رو از PictureBox گرفتید و نوشته روی اون کشیده میشه.بعد چون کنترل های رو فرم زیاد Draw میشن،بلافاصله پاک میشه.کدتون رو به کد زیر تغییر بدید ،موجودیت Graphics رو از یک Image بسازید و بعد روی Image بنویسید.در آخر آن را در PictureBox نمایش دهید :
Image im = Image.FromFile(@"D:\1.png");
PictureBox.SizeMode = PictureBoxSizeMode.StretchImage;
Graphics g = Graphics.FromImage(im);
string drawString = "12345678" + "\n" + "\n" + "زیبایی در سادگی";
SolidBrush drawBrush = new SolidBrush(Color.Red);
RectangleF rec = new RectangleF(20, 20, PictureBox.Width - 50, PictureBox.Height);
StringFormat drawFormat = new StringFormat();
drawFormat.FormatFlags = StringFormatFlags.DirectionRightToLeft;
g.DrawString(drawString, new Font("Tahoma", 20), drawBrush, rec, drawFormat);
PictureBox.Image=im;

aliagamon
دوشنبه 30 تیر 1393, 08:47 صبح
کدتونو باید به این صورت تغییر بدین :

Bitmap btm=new Bitmap(@"D:\1.jpg");
Graphics g = Graphics.FromImage(btm);
string drawString = "12345678" + "\n" + "\n" + "زیبایی در سادگی";
SolidBrush drawBrush = new SolidBrush(Color.Red);
RectangleF rec = new RectangleF(20, 20, btm.Height - 50, btm.Height);
StringFormat drawFormat = new StringFormat();
drawFormat.FormatFlags = StringFormatFlags.DirectionRightToLeft;
g.DrawString(drawString, new Font("Tahoma", 20), drawBrush, rec, drawFormat);
PictureBox.Image = btm;
PictureBox.SizeMode = PictureBoxSizeMode.StretchImage;