Вычислить текстовую высоту на основе доступной ширины и шрифта?

Это можно сделать с помощью простого ListView, который содержит изначально скрытое представление и пользовательский класс, расширяющий Animation. Основная идея состоит в том, чтобы начать с View.GONE, а затем постепенно изменять размер поля с отрицательного значения до требуемого размера, устанавливая видимость на View.VISIBLE.

См .:

.. и, наконец,

Последний пример содержит весь необходимый код. Это выглядит немного хакерским для меня, особенно тот факт, что вы должны изначально установить view.bottomMargin = -50 или более, в противном случае анимация не работает должным образом с первого раза, но до сих пор я не нашел какой-либо жизнеспособной альтернативы (кроме использования ScrollView с ваши собственные элементы контейнера вместо ListView).

И, наконец, это приложение включает в себя приведенный выше пример, среди множества других полезных примеров со ссылками на источники:

Обновление: Google удалил приложение из игрового магазина якобы за нарушение интеллектуальной собственности (хотя оно содержало только демонстрации и ссылки на проекты с открытым исходным кодом), автор теперь сделал apk доступен для прямой загрузки с http://goo.gl/ihcgs Подробнее см. https://plus.google.com/108176685096570584154/posts . NB: я не связан с автором.

16
задан RedFilter 23 May 2009 в 10:59
поделиться

3 ответа

В .NET вы можете позвонить Graphics.MeasureString, чтобы узнать, как нарисованный текст будет большим.

Верно, но при использовании PDFsharp вы вызываете XGraphics.MeasureString.

10
ответ дан 30 November 2019 в 16:14
поделиться

В .NET вы можете вызвать Graphics.MeasureString , чтобы узнать, насколько большим будет нарисованный текст.

5
ответ дан 30 November 2019 в 16:14
поделиться

Объект PdfSharp.Drawing.XGraphics имеет метод MeasureString, который возвращает то, что вам нужно.

 var pdfDoc = new PdfSharp.Pdf.PdfDocument();
 var pdfPage = pdfDoc.AddPage();
 var pdfGfx = PdfSharp.Drawing.XGraphics.FromPdfPage(pdfPage);
 var pdfFont = new PdfSharp.Drawing.XFont("Helvetica", 20);

 while (pdfGfx.MeasureString("Hello World!").Width > pdfPage.Width)
      --pdfFont.Size;

 pdfGfx.DrawString("Hello World!", pdfFont
      , PdfSharp.Drawing.XBrushes.Black
      , new PdfSharp.Drawing.XPoint(100, 100));

Это должно вам помочь. Учтите, что я не тестировал этот код, так как написал его на лету, чтобы помочь. Он может содержать некоторые ошибки времени компиляции, но вы можете понять суть.

20
ответ дан 30 November 2019 в 16:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: