| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Вывод текста на Image->Canvas заданным шрифтом |
| Автор: SparF 6.9.2007, 00:29 | ||
С обычным выводом на канву проблем не возникает, а вот если попытаться сделать это каким-либо шрифтом - в тех координатах, куда осуществляется вывод видно лишь закрашенный прямоугольник. Вот код:
Скриншот прилагается)) (Image1 - кнопка с закругленными краями) Добавлено через 46 секунд Скриншот: Добавлено через 10 минут и 10 секунд В голову приходит поместить Label над Image - но что-то как-то это не красиво (( да и при движении Image (а мне придется его двигать) вызовет кучу запарок.... |
| Автор: SenkraD 6.9.2007, 07:31 |
| SparF, а на прямую зменять параметры шрифта канвы пробовал? А в твоём способе ещё и запоминать нужно предыдущий и потом возвращать обратно!!! |
| Автор: 586 7.9.2007, 08:28 |
| Image1->Canvas->Brush->Color=clNone; |
| Автор: abrekos 7.9.2007, 08:31 | ||
Не, лучше так: Image1->Canvas->Brush->Style = bsClear; |
| Автор: SenkraD 7.9.2007, 08:31 |
| SparF, у меня этот код работает (добавь стили fsItalic и fsUnderline и увидишь) Да, ты прав - глянул исходный код он там Assign'тся - утечки не будет |
| Автор: SparF 9.9.2007, 21:08 |
| Спасибо)) как только домой доберусь - испробую)))) |
| Автор: Rekah 9.9.2007, 22:11 |
| А подскажите как сделать эффект перетаскивания мюшью объекта label? Я пробовал использовать MouseUp Doun, Movi объекта label и Table, но что-то не получается, есть у кого какие соображения? |
| Автор: Pori 10.9.2007, 21:00 | ||
Ну вот кое-что (не судите строго -писал на скорую руку):
Работает вроде, но хватается за 0,0 лэйбела Для того, чтобы было не так, сделай аналогично приведенному выше коду. |
| Автор: GIK 11.9.2007, 17:27 |
| Помойму не получиться, Label1MouseMove - передвижение по самой Label мышью, а не объета по форме. Теперерь вопрос, как это реализовать? Через MouseMove самой формы тоже не получиться, нужно как-то припоять объект label вместо mouse. |
| Автор: SparF 11.9.2007, 19:41 | ||
Спасибо большое, это работает) вот только никак не получается заставить ее выводить надпись нужным цветом (цветом шрифта) извращения с
не помогают ( |
| Автор: Pori 11.9.2007, 20:15 | ||
хм, все получится. Вы посмотрите внимательней, нам же главное не движение мышью объекта (собственно это мы и собираемся реализовать), а движение мыши(просто движение мыши!), а то что мы отлавливаем это движение в нужный момент, это гарантирует переменная bool down Или же вы имеете в виду, что координаты будут не верны??? Ну так для этого мы и не берем переменные X и Y из функции Label1MouseMove, а используем WinAPI функцию GetCursorPos, которая возвращает координаты мыши относительно экрана P.S.:я не силен в объяснениях |
| Автор: Pori 11.9.2007, 20:48 | ||
А вот усовершенствованный вариант, в котором положение мыши относительно лэйбела остается неизменным:
Для тех, кто не верит что работает, приведен весь файл cpp. Остается только добавить на форму Label и проверить работоспособность самим ;) |
| Автор: abrekos 12.9.2007, 09:02 | ||||
Да не, Brush - это кисть, а цвет шрифта определяется так: Image1->Canvas->Font->Color = ... ; |
| Автор: GIK 12.9.2007, 09:12 | ||
Да нет, нормально объяснил |
| Автор: Rekah 12.9.2007, 21:13 | ||
Pori, еще момент есть, не учли раположение курсора на самом Labele
|
| Автор: SparF 14.9.2007, 12:48 | ||
Это уже давно сделано (самый первый листинг в теме), все равно на цвете не отражается (( |