Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вертикальное рисование текста GDI+ 
V
    Опции темы
Kolovorot
Дата 23.11.2010, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 12.1.2009

Репутация: нет
Всего: 3



Как нарисовать вертикальный текст?
--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
de_Nis
Дата 23.11.2010, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старательный
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 19.10.2006
Где: Молдова

Репутация: нет
Всего: 6



М. б. это:

private void button2_Click(object sender, EventArgs e) 
{ 
Graphics g = CreateGraphics(); 
SolidBrush solBrush = new SolidBrush(Color.Gray); 
Font f = new Font("Tahoma", 26, FontStyle.Bold); 
// Разворачиваем текст на 30 градусов 
g.RotateTransform (30); 
g.DrawString("Тра-та-та", f, solBrush, 40, 10); 
g.Dispose(); 
} 

--------------------
Несчастлив не тот, у кого ничего нет, а тот, кто ничего не хочет…
PM   Вверх
Kolovorot
Дата 24.11.2010, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 12.1.2009

Репутация: нет
Всего: 3



Цитата(de_Nis @ 23.11.2010,  16:28)
М. б. это:

private void button2_Click(object sender, EventArgs e) 
{ 
Graphics g = CreateGraphics(); 
SolidBrush solBrush = new SolidBrush(Color.Gray); 
Font f = new Font("Tahoma", 26, FontStyle.Bold); 
// Разворачиваем текст на 30 градусов 
g.RotateTransform (30); 
g.DrawString("Тра-та-та", f, solBrush, 40, 10); 
g.Dispose(); 
}

Это. Только нужно сделать упор на то, что RotateTransoform(270) поворачивает систему координат на 270 градусов. Соответственно придётся использовать ещё метод  g.TranslateTransform(val). А так уже сам разобрался.

Это сообщение отредактировал(а) Kolovorot - 24.11.2010, 09:52
--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
de_Nis
Дата 1.12.2010, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старательный
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 19.10.2006
Где: Молдова

Репутация: нет
Всего: 6



Для рисования текста под углом надо применить нужное преобразование к системе координат, нарисовать то, что нам надо, и потом восстановить старую систему координат:
  
Код


    //Непосредственное рисование.
    protected override void OnPaint(PaintEventArgs e)
    {
    DrawString(e.Graphics, "Igor", 100, 100, 180, Brushes.Red);
    DrawString(e.Graphics, "Igor", 100, 200, 90, Brushes.Teal);
    base.OnPaint(e);
    }
    // Метод для рисования под углом.
    void DrawString(Graphics g, string s, int x, int y, int angle, Brush brush)
    {
    // Устанавливаем начало координат в точку (x, y).
    g.TranslateTransform(x, y);
    // Поворачиваем систему кооординат.
    g.RotateTransform(angle);
    // Выводим надпись.
    g.DrawString(s, new Font(Font.FontFamily, 16), brush, 0, 0);
    // Поворачиваем систему кооординат обратно.
    g.RotateTransform(-angle);
    // Устанавливаем начало координат в первоначальную точку.
    g.TranslateTransform(-x, -y);
    }



Для удобства вынесли код для рисования под углом в отдельный метод. Смысл кода должен быть понятен из комментариев.
Обратите внимание, что угол указываем в градусах.

Разумеется, указанный прием можно использовать не только для вывода текста под углом, но и рисунков и т. п.
(см. http://sharpes.ru/static/kak_narisovat_tekst_pod_uglom.html)

--------------------
Несчастлив не тот, у кого ничего нет, а тот, кто ничего не хочет…
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.