Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GDI+. Как нарисовать строку повертикали? т.е. повернуть на 90 градусов 
:(
    Опции темы
voov
Дата 21.5.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



Нужно нарисовать строку по вертикали (повернутую на 90 градусов против часовой стрелки), используя библиотеку GDI+. Какими способами можно это сделать?
PM MAIL   Вверх
voov
Дата 5.6.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



Неужели совсем нет вариантов?

Я нашел следующий способ.
Код

    Graphics g(cdc);   // контекст для рисования, где нужно нарисовать строку повертикали.
    wideString = L"some text";   // строка
    Bitmap stringBuffer(100, 20);  // создаем временный буфер, куда будем рисовать строку
    Graphics stringGr(&stringBuffer);  // и контекст для него
    stringGr.DrawString(wideString, -1, pFont, PointF(0, 0), pFormat, pBrush);  // рисуем строку
    stringBuffer.RotateFlip(Rotate270FlipNone);  // поварачиваем буфер как нам нужно
    g.DrawImage(&stringBuffer, x, y);  // и рисуем содержимое буфера в наш контекст для рисования в том месте, где нам нужно

Но я не уверен, что этот способ оптимальный. Может кто сможет предложить способ получше?
PM MAIL   Вверх
Earnest
Дата 5.6.2008, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Насчет GDI+ не скажу, а через "чистый" GDI делается так: создаешь фонт с "повернутыми" символами (просто угол наклона символа в структуре LOGFONT ставишь) и рисуешь через DrawText, указывая, конечно, соответствующий RECT.
Наверняка в GDI+ можно найти аналоги.


--------------------
...
PM   Вверх
Rapalex
Дата 6.6.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Самое простое повернуть систему координат, и да и всё.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
voov
Дата 6.6.2008, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



Цитата

Насчет GDI+ не скажу, а через "чистый" GDI делается так: создаешь фонт с "повернутыми" символами (просто угол наклона символа в структуре LOGFONT ставишь) и рисуешь через DrawText, указывая, конечно, соответствующий RECT.
Наверняка в GDI+ можно найти аналоги.

Пробовал. Брал рабочий пример на Делфи с таким способом. Делал аналогично - Не получилось. Может есть пример на С с GDI, о котором ты говоришь?

Цитата

Самое простое повернуть систему координат, и да и всё.

Это как?
PM MAIL   Вверх
Earnest
Дата 7.6.2008, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Примера под рукой нет -давно когда-то делала, так что точно работает, но вполне могут быть какие-то тонкости...
Попробуй пошарить на codeproject


--------------------
...
PM   Вверх
voov
Дата 9.6.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



Нашел еще такую штуку как StringFormatFlags. Если ему установить StringFormatFlagsDirectionVertical, то строка рисуется вертикально, но повернутая на 90 градусов по часовой стрелке. 
А чтобы строка была повернута на 90 градусов против часовой, используется TranslateTransform и RotateTransform из класса Graphics вкупе с StringFormatFlags - это на codeproject.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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