سؤال

لدي سلسلة مثل هذا:

string s = "This is my string";

أنا خلق Telerik تقرير و لا تحتاج إلى تعريف textbox هذا هو عرض من سلسلة بي.ومع ذلك حجم المنشأة يحتاج إلى أن يتم تعيين وحدة (بكسل, نقطة, بوصة, الخ).كيف يمكنني تحويل طول السلسلة إلى القول بكسل لذا يمكن تعيين العرض ؟

تحرير: لقد حاولت الحصول على مرجع إلى كائن الرسومات, ولكن هذا يتم في فئة يرث من Telerik.Reporting.Report.

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

المحلول

دون استخدام عنصر التحكم أو النموذج:

using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(new Bitmap(1, 1)))
{
    SizeF size = graphics.MeasureString("Hello there", new Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point));
}

أو في VB.Net:

Using graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(New Bitmap(1, 1))
    Dim size As SizeF = graphics.MeasureString("Hello there", New Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point))
End Using

نصائح أخرى

Size textSize = TextRenderer.MeasureText("How long am I?", font);

في هذه الحالة, أنا عادة استخدام القذرة ، ولكن طريقة بسيطة:

  • إضافة غير مرئية Label أن AutoSize العقار true -العمل القذر-.
  • عندما كنت تريد أن يكون Width عن سلسلة معينة ، إلى Label.Text.
  • على Width من Label سوف تعطيني القيمة الصحيحة.

يعتمد على الخط أيضا.طول السلسلة ليست كافية.

يمكنك إنشاء مثيل كائن رسومات غير استخدام MeasureString() الأسلوب.ولكن سوف تحتاج إلى تمرير اسم الخط وحجم الخط وغيرها من المعلومات.

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