PDA

View Full Version : ایجاد شکل لوزی در یک تکست باکس



Salar Ashgi
دوشنبه 07 مرداد 1387, 12:19 عصر
من میخواهم در یک تکست باکس یا ریچ تکست اکس یا هر چیز دیگری در سی شارپ

شکل لوزی زیر را تولید کنم؟ از لحاظ الگوریتمی مشکل ندارم و اینو تو سی پلاس پلاس

نوشتم ، فقط تو سی شارپ مشکل فاصله دارم ، نمی دونم چه جوری فاصله ایجاد کنم؟

خیلی لطف می کنید اگه راهنمایی کنید ! مرســــــی !

http://i35.tinypic.com/2yvwhau.jpg

ASKaffash
دوشنبه 07 مرداد 1387, 12:36 عصر
سلام
یعنی میخواهی با کارکتر * اینکار را انجام دهی ؟
خوب با متد MeasureText طول رشته شامل کارکترهای * را اندازه بگیر و همیشه وسط مستطیل چاپ کن اینطوری نیازی به استفاده از کارکتر فاصله نداری


private void MeasureText1(PaintEventArgs e)
{
String text1 = "Measure this text";
Font arialBold = new Font("Arial", 12.0F);
Size textSize = TextRenderer.MeasureText(text1, arialBold);
TextRenderer.DrawText(e.Graphics, text1, arialBold,
new Rectangle(new Point(10, 10), textSize), Color.Red);
}

Salar Ashgi
دوشنبه 07 مرداد 1387, 13:28 عصر
سلام
یعنی میخواهی با کارکتر * اینکار را انجام دهی ؟
خوب با متد MeasureText طول رشته شامل کارکترهای * را اندازه بگیر و همیشه وسط مستطیل چاپ کن اینطوری نیازی به استفاده از کارکتر فاصله نداری


private void MeasureText1(PaintEventArgs e)
{
String text1 = "Measure this text";
Font arialBold = new Font("Arial", 12.0F);
Size textSize = TextRenderer.MeasureText(text1, arialBold);
TextRenderer.DrawText(e.Graphics, text1, arialBold,
new Rectangle(new Point(10, 10), textSize), Color.Red);
}


--------------------------------------------------------
دوست عزیز من متاسفانه منظور شما رو نفهمیدم ، این کد رو کجا باید بنویسم؟

ASKaffash
دوشنبه 07 مرداد 1387, 13:36 عصر
سلام
دوست من متد اعلام شده برایتان اندازه یک متن قابل چاپ را اعلام میکند وشما با داشتن عرض مستطیل موردنظرتان عبارت را چاپ میکنید در ضمن برای ترسیمات گرافیکی عملیات در متد Paint اتفاق می افتد و این مثال ارائه شده از MSDN است که روش استفاده از MeasureText را نشان میدهد. اگر در نوشتن منطق
این برنامه مشکلی هست بگو تا کمک کنیم

Salar Ashgi
دوشنبه 07 مرداد 1387, 13:50 عصر
سلام
دوست من متد اعلام شده برایتان اندازه یک متن قابل چاپ را اعلام میکند وشما با داشتن عرض مستطیل موردنظرتان عبارت را چاپ میکنید در ضمن برای ترسیمات گرافیکی عملیات در متد Paint اتفاق می افتد و این مثال ارائه شده از MSDN است که روش استفاده از MeasureText را نشان میدهد. اگر در نوشتن منطق
این برنامه مشکلی هست بگو تا کمک کنیم

دوست گرامی میشه لطف کنی کد کاملش که لوزی رو رسم کنه بنویسی ؟

ASKaffash
دوشنبه 07 مرداد 1387, 14:13 عصر
سلام
اینهم کدش :


private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Clear(this.BackColor);
int n = 11;
int t = 0;
for (int i = 1; i <= n; i++)
{
int k = i - (i < n / 2 + 1 ? 0 : 2 * t++);
string T = "".PadLeft(k, '*');
SizeF S = e.Graphics.MeasureString(T, this.Font);
PointF P = new PointF((this.ClientRectangle.Width - S.Width) / 2, (i - 1) * S.Height);
e.Graphics.DrawString(T, this.Font, new SolidBrush(this.ForeColor), P);
}
}