PDA

View Full Version : سوال: تراز کردن متن



pbiuki630
دوشنبه 17 اسفند 1388, 09:23 صبح
سلام دوستان
من یه متن دارم که بعضی مقادیر رو از پایگاه داده میخونه جه جوری باید موقع چاپ متن اونو تراز یا همون justify کنم؟الان وقتی پرینت میگیرم چون مقادیری که از data baseخونده میشه طولهاش یکسان نیست بهم میریزه؟میشه کمکم کنید،ممنون

mdsh1400
دوشنبه 17 اسفند 1388, 09:55 صبح
سلام دوست عزیز

از چه نرم افزار گزارش گیری استفاده می کنید؟

pbiuki630
دوشنبه 17 اسفند 1388, 10:04 صبح
سلام دوست عزیز

از چه نرم افزار گزارش گیری استفاده می کنید؟
از کامپونت های خود c# استفاده میکنم.در حقیقت یه نامه اداری هست که دارم پرینت میگیرم از print dialog استفاده کردم

ASKaffash
دوشنبه 17 اسفند 1388, 10:24 صبح
سلام
از کلاس graphics استفاده میکنید ؟

pbiuki630
دوشنبه 17 اسفند 1388, 10:32 صبح
سلام
از کلاس graphics استفاده میکنید ؟

نه از این function استفاده کردم وبعد فراخونی میکنیم،با name space (
using System.Drawing.Printing;

)


private void document_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
}



{

ASKaffash
دوشنبه 17 اسفند 1388, 10:56 صبح
سلام
روی e یک شی بنام Graphics وجود دارد :


var w = e.Graphics.MeasureString("ABC", this.Font).Width;
var h = e.Graphics.MeasureString("ABC", this.Font).Height;

SMRAH1
دوشنبه 17 اسفند 1388, 11:08 صبح
سلام
از خوده StringFormat می تونی استفاده کنی یعنی :

StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center; //ازا ين براي تراز افقي استفاده کن
sf.LineAlignment = StringAlignment.Center; //از اين براي تراز عمودي استفاده کن
//اين گزينه رو با فلگ هاي ديگه اي هم ميشه تلفيق کرد که حتما تست کن - اين فلگ فقط يک خط از متن رو مي نويسه و اگر متن چند خط بود،فقط خط اول رو ،البته تا جايي که بتونه،مي نويسه
sf.FormatFlags = StringFormatFlags.LineLimit;
sf.Trimming = StringTrimming.EllipsisCharacter; //اگر نتوانست متن رو کامل چاپ کنه،چطوري متن رو ببره
//اين هم يک نمونه تلفيق فلگ که راست به چپ رو فعال مي کنه و معمولا براي زبان فارسي مفيده
sf.FormatFlags |= StringFormatFlags.DirectionRightToLeft;

e.Graphics.DrawString(yourString, new Font(Tahoma,11), Brushes.Black,
new Rectangle(beginX,beginY,width,height), sf);موفق باشی

pbiuki630
دوشنبه 17 اسفند 1388, 12:50 عصر
سلام
روی e یک شی بنام Graphics وجود دارد :


var w = e.Graphics.MeasureString("ABC", this.Font).Width;
var h = e.Graphics.MeasureString("ABC", this.Font).Height;



دوست عزیز میشه یه ذره بیشتر توضیح بدید.

ASKaffash
دوشنبه 17 اسفند 1388, 13:14 عصر
سلام
قبل از چاپ یک متن میتوان طول به پیکسل را برای متن با فونت موردنظر شامل طول و عرض آن را با متدهای اعلام شده بدست آورد

pbiuki630
دوشنبه 17 اسفند 1388, 13:54 عصر
سلام
قبل از چاپ یک متن میتوان طول به پیکسل را برای متن با فونت موردنظر شامل طول و عرض آن را با متدهای اعلام شده بدست آورد


یعنی از این دیگه استفاده نکنم
e.Graphics.DrawString(text, printFont,
System.Drawing.Brushes.Black,20,20);
ببخشید الان که شما w و h رو تعریف کردید،کجا ازشون استفاده کنم ؟

ASKaffash
دوشنبه 17 اسفند 1388, 14:02 عصر
سلام
یک راهش اینستکه با یک حلقه طول w را محاسبه کنید اگر بزرگتر بود یک کاراکتر از طول Text کم کنید و تا زمانیکه کمتریا مساوی طول مورد نظر شما شود کار را ادامه دهید (در بعضی از ابزارها دیده اید)

pbiuki630
دوشنبه 17 اسفند 1388, 14:06 عصر
سلام
یک راهش اینستکه با یک حلقه طول w را محاسبه کنید اگر بزرگتر بود یک کاراکتر از طول Text کم کنید و تا زمانیکه کمتریا مساوی طول مورد نظر شما شود کار را ادامه دهید (در بعضی از ابزارها دیده اید)

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

ASKaffash
دوشنبه 17 اسفند 1388, 14:19 عصر
سلام
اینهم یک مثال :


protected override void OnPaint(PaintEventArgs e)
{
string TmpText = this.Text;
while (true)
{
var w = e.Graphics.MeasureString(TmpText, this.Font).Width;
if (w <= this.ClientRectangle.Width)
break;
TmpText = TmpText.Substring(1);

}
var x = this.ClientRectangle.Width - e.Graphics.MeasureString(TmpText, this.Font).Width;
var y = (this.ClientRectangle.Height - e.Graphics.MeasureString(TmpText, this.Font).Height) / 2;
e.Graphics.Clear(this.BackColor);
e.Graphics.DrawString(TmpText, this.Font, Brushes.Red, x, y);
}