Предпочтительно, используя объект Graphics
, как вы нарисуете строку, чтобы символы по-прежнему были ориентированы в обычном порядке, но располагались вертикально?Рисование текста с вертикальной укладкой в WinForms
ответ
Просто разделить строку на символы и нарисовать каждый добавив высоту строки вашего шрифта в переменную Y-ось:
protected override void OnPaint(PaintEventArgs e)
{
float x = 10.0F;
float y = 10.0F;
string drawString = "123";
using(SolidBrush brush = new SolidBrush(Color.Black))
using (Font drawFont = new Font("Arial", 16))
{
foreach (char c in drawString.ToCharArray())
{
PointF p = new PointF(x, y);
e.Graphics.DrawString(c.ToString(), drawFont, brush, p);
y += drawFont.Height;
}
}
base.OnPaint(e);
}
Мне это нравится, потому что это позволяет вам легко настраивать высоту каждой буквы; однако в этом примере вы не используете кисть. В реальной жизни вы также должны визуализировать буфер при необходимости и просто копировать из буфера в OnPaint. – overslacked
хорошая точка, я добавил удаление объекта – scottm
Если вы уже используете правую ограничительную рамку, я бы написал функцию, которая просто вводила «\ n».
Да, используя escape-символ \ n (новая строка), он будет подавлен. Однако, если вы введете \ n в визуальный конструктор, он поместит текст как \ n, думая, что вы имели в виду фактический символ обратной косой черты, а не escape-символ новой строки.
Here является примером проекта, который делает вертикальный текст. Также есть комментарии относительно выравнивания текста.
Из примера можно использовать StringAlignment.Center, чтобы центрировать символы и передать их последнему параметру вызова DrawString.
protected override void OnPaint(PaintEventArgs e)
{
float x = 10.0F;
float y = 10.0F;
Font drawFont = new Font("Arial", 16);
SolidBrush drawBrush = new SolidBrush(Color.Black);
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
foreach (char c in Text.ToCharArray())
{
PointF p = new PointF(x, y);
e.Graphics.DrawString(c.ToString(), drawFont, drawBrush, p, sf);
y += drawFont.Height;
}
}
не знал, что вы можете указать выравнивание таким образом! – scottm
- 1. UITextView отступы с укладкой текста
- 2. Рисование с Winforms
- 3. Рисование вертикальной гистограммы C#
- 4. Рисование строки в Winforms
- 5. Рисование в Winforms
- 6. Chart.js - рисование произвольной вертикальной линии
- 7. C# Winforms. Рисование текста точно по центру в прямоугольнике
- 8. Рисование простой вертикальной линии с g.DrawLine
- 9. Рисование мигающей каретки в Winforms
- 10. Рисование вертикальной линии между кругами в холсте
- 11. Рисование текста в CGPoint
- 12. Рисование текста в python
- 13. Рисование текста в Cinder
- 14. Рисование текста в окне
- 15. Рисование текста в LibGDX
- 16. Рисование прозрачного изображения на WinForms
- 17. SQL Performance с укладкой
- 18. Галерея с «укладкой» изображений
- 19. Проблемы с укладкой Opengl
- 20. Проблема с укладкой слоев
- 21. Рисование интервала на графике с использованием вертикальной линии в R?
- 22. Рисование текста с графикой ядра
- 23. Рисование текста с использованием CATiledLayer
- 24. Рисование большого текста с GLUT?
- 25. Рисование текста с использованием Swing
- 26. Рисование текста QPushButton с кнопки
- 27. Рисование текста с использованием NSTextStorage
- 28. Рисование текста с MFC CDC
- 29. Рисование текста с помощью холста
- 30. Рисование текста в библиотеке изображений
Как насчет выравнивания? по центру или другим? –
Мне пришлось удалить изображение с вашего поста, потому что ImageShack удалил его и заменил его рекламой. См. Http://meta.stackexchange.com/q/263771/215468 для получения дополнительной информации. Если возможно, было бы здорово, если бы вы повторно загрузили их. Благодаря! – Undo