![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Ophelia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.3.2008 Репутация: нет Всего: нет |
Добрый день всем.
Пишу приложение на C#, VS2005 (ОС - Windows 2000). У меня есть некоторая канва, на ней рисую блоки-прямоугольники с текстом. В режиме больших шрифтов dpi 120 (и больше) шрифт увеличивается, и буквы вылезают за пределы блоков, так как режим шрифтов на размеры блоков не влияет. Юниты канвы - Display. Как это обойти - растянуть блоки, не затрагивая шрифтов?.. Масштабирование канвы не подходит, так как в этом случае всё растягивается - и шрифт тоже. Может, кто знает, можно как-нидь указать для канвы особый размер юнитов?... Спасибо. |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Ophelia, по-моему вам в раздел С#
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 17 Всего: 59 |
Не въехал. Тебе что нужно? Чтоб при изменении dpi шрифт оставался прежним, а блоки увеличивались? Или чтоб увеличивались оба и шрифт и блоки?
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Ophelia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.3.2008 Репутация: нет Всего: нет |
Andrey44, так это и не я переместила тему в раздел С/С++, это модератор форума по общим вопросам по ОС Windows, куда я в начале и поместила тему. Может, у него своя логика....
-Mikle-, шрифт сам увеличивается, мне надо увеличить только всё остальное - блоки и прочее.. Чтоб при новых, больших шрифтах, текст не вылезал за пределы блоков.... |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 17 Всего: 59 |
Попробуй рисовать другими единицами, например миллиметрами.
g.PageUnit = GraphicsUnit.Millimeter; -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Ophelia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.3.2008 Репутация: нет Всего: нет |
...пасиба, пробовала, но эт тоже не фонтан - лучше всего получалось рисовать в точках, но тогда блоки получаются слишком крупными... и скроллирование неправильно работает - надо смотреть, в чем там дело...
Может, можно как-нидь для канвы установить свой размер точек?... |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Ophelia, попробуй замерить размер символов через Graphics.MeasureCharacterRanges/MeasureString, и привязать размеры блоков к нему.
|
|||
|
||||
| Ophelia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.3.2008 Репутация: нет Всего: нет |
..пасиба, но это, к сожалению, тоже не решение - пользователь сам выставляет размеры блоков, как ему нужно... Кроме того, размеры зависят еще от некоторых условий.... :(
То есть, можно менять размеры блоков и всего остального, но только пропорционально для всех, как при масштабировании, а не для каждого блока в отдельности... Можно, конечно, посмотреть, что в Графиксе для канвы dpiX и dpiY не 96, и умножать все размеры на коэффициент (например, на (dpiX /96)), но это тоже не очень красивое решение.... Все блоки и другие объекты - разные, надо будет в каждый в Paint() это всё пихать.... Думала, если для канвы юниты - Display, а для шрифта - точки, можно как-нидь для канвы указать отдельно размер точек, так, чтоб всё то, что не в point, автоматически растянулось.... Вообще, можно ли для канвы указать свой размер юнитов?.... |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 17 Всего: 59 |
можно Graphics.PageScale = 0.1F; -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |