كيف يمكن استخدام طريقة drawString لكتابة الطريقة القطرية

StackOverflow https://stackoverflow.com/questions/91521

سؤال

أنا أستخدم c# 2005 وأريد كتابة سلسلة قطريًا على الصورة.لكن افتراضيًا، يوفر c# خيار الكتابة أفقيًا أو رأسيًا.

كيف نكتب قطريا؟

شكرًا

هل كانت مفيدة؟

المحلول

افعل أ Graphics.rotateTransform قبل استدعاء drawString.لا تنس عكس التغيير بعد ذلك، كما يشير فيل رايت.

نصائح أخرى

يمكنك استخدام RotateTransform وTranslateTransform المتوفرة في فئة الرسومات.نظرًا لأن استخدام DrawString هو GDI+، فإن التحويلات تؤثر على الرسم.لذا استخدم شيئًا مثل هذا ...

g.RotateTransform(45f);
g.DrawString("My String"...);
g.RotateTransform(-45f);

لا تنس عكس التغيير بالرغم من ذلك!

يمكنك استخدام هذه الوظيفة.

   void DrawDigonalString(Graphics G, string S, Font F, Brush B, PointF P, int Angle)
   {
       SizeF MySize = G.MeasureString(S, F);
       G.TranslateTransform(P.X + MySize.Width / 2, P.Y + MySize.Height / 2);
       G.RotateTransform(Angle);
       G.DrawString(S, F, B, new PointF(-MySize.Width / 2, -MySize.Height / 2));
       G.RotateTransform(-Angle);
       G.TranslateTransform(-P.X - MySize.Width / 2, -P.Y- MySize.Height / 2);
   }

مثله

enter image description here

لديك الحق..يمكن القيام بذلك بهذه الطريقة..ولكن سيتم كتابة النص من الأعلى إلى الأسفل دائمًا ولست متأكدًا من أنه يمكنك تغييره من الأسفل إلى الأعلى..هتافات

هناك طريقة أخرى لرسم النص عموديًا وهي مضمنة في لغة C#.ليست هناك حاجة لتحويل الرسومات بشكل واضح.يمكنك استخدام فئة StringFormat.إليك نموذج التعليمات البرمجية الذي يرسم النص عموديًا:

StringFormat sf = new StringFormat();sf.FormatFlags = StringFormatFlags.DirectionVertical;e.Graphics.DrawString("My String", this.Font, Brushes.Black, PointF.Empty, sf);

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top