Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 09.04.2017
Сообщений: 12

Прозрачный текст в TLabel

01.03.2019, 09:42. Показов 1938. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время.

Необходимо сделать плавное появление текста на форме. Если не ошибаюсь, текст в TLabel нельзя сделать хоть на сколько-нибудь прозрачным, было бы идеально, но других альтернатив не знаю, ничего не смог найти.

Существуют ли какие хитрости для решения этой задачи?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.03.2019, 09:42
Ответы с готовыми решениями:

Подчеркнутый текст в TLabel
Как мне сделать что-то типа этого? Label1->Font->Style = fsUnderline;

Как в TLabel сделать отдельный текст Жырным?
Добрых суток Форумчяни, может ктото сталкивался с такой задачей: В Label1 нужно вивести текст, но чтобы отдельний текст в Label1-е был...

Текст поверх картинки, прозрачный фон, заданный цвет
Тут возникла необходимость на объекте Image выводить текст много много раз ... да еще и на черном фоне. Как создавать текст поверх картинки...

11
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
01.03.2019, 10:23
Сделай постепенное увеличение размера шрифта.
Или глянь Прозрачная форма, полупрозрачный текст.
0
0 / 0 / 0
Регистрация: 09.04.2017
Сообщений: 12
01.03.2019, 11:00  [ТС]
Если речь идёт о строчке:
C++
1
::SetLayeredWindowAttributes(Form1->Handle,clWhite ,64,LWA_ALPHA | LWA_COLORKEY);
то функция, как я понял, применима исключительно к форме, разве не так? В моём случае нужно лишь прозрачность текста со временем менять, всё остальное должно быть полностью видимым.

Увеличение шрифта, конечно, не так серьёзно выглядит, как появление текста, но как запасной вариант сойдёт. Если ещё какие подсказки по прозрачности текста найдутся - буду признателен их услышать.
0
 Аватар для qppq
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 780
Записей в блоге: 2
01.03.2019, 13:32
как вариант текст имеет цвет фона (например белый) и градациями серого становится чёрным
0
0 / 0 / 0
Регистрация: 09.04.2017
Сообщений: 12
01.03.2019, 13:37  [ТС]
Тоже думал об этом. Но я себе, выходит, невзначай задачу с самого начала усложнил, сделав фон градиентным. Будет слегка видно текст. И не знаю, плавно вряд ли получится текст на форме проявить, изменяя цвет. Скачки от одного к другому цвету видны будут.

Как-то странно выходит, что с виду простую задачу - сделать текст прозрачным - нельзя выполнить простым способом, не ожидал.
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
01.03.2019, 13:43
StArthur, а в момент какого события должна показываться метка?
0
0 / 0 / 0
Регистрация: 09.04.2017
Сообщений: 12
01.03.2019, 13:48  [ТС]
Там на форме должны инструкции (текст) сменяться во время работы приложения. Грубо говоря, кнопку нажал - и первая инструкция заменяется второй на её же месте. Другую нажал - третья появилась на месте предыдущей. Например, одну секунду текст исчезает и за такое же время появляется новый. И всё это работает с помощью таймеров, т.е кнопку нажал - таймер включился и погнали текстами манипулировать.
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
01.03.2019, 14:16
Можно попробовать имитировать движение всего текста сразу сверху вниз или справа налево, при этом старый текст будет "уезжать", а новый "приезжать".

Добавлено через 10 минут
Или сделать подобно этому (смотреть примерно с момента 3:30):
видео
1
0 / 0 / 0
Регистрация: 09.04.2017
Сообщений: 12
01.03.2019, 14:20  [ТС]
Скорее применю этот уезжающий вариант. Жаль, что с прозрачностью не прокатило.

Спасибо всем за ответы, обнял, до связи
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
01.03.2019, 15:07
Ну написано же выше: подбери значение v, при котором RGB(v, v, v) будет совпадать с начальным и с конечным нужным цветом (один из них = черный, поэтому RGB(0, 0, 0), второй для классической схемы в WinXP/Win7, например = 200, при RGB(200, 200, 200) текст сливается с фоном, и по таймеру меняй эти значения. Грубо - вот таким перехватчиком:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
namespace Transparent_Label
{
    class TLabel : public Stdctrls::TLabel
    {
        bool FHide;
        TTimer *tmr;
        int rgb;
        void __fastcall ColorTimer(TObject *Sender)
        {
            if((FHide && rgb <= 200) || (!FHide && rgb >= 0))
            {
                this->Font->Color = RGB(rgb, rgb, rgb);
                rgb -= (1 - 2 * (int)FHide) * 2;
            }
            else tmr->Enabled = false;
        }
    public:
        __fastcall virtual TLabel(Classes::TComponent* AOwner) : Stdctrls::TLabel(AOwner)
        {
            tmr = new TTimer(this);
            tmr->OnTimer = ColorTimer;
            tmr->Interval = 10;
            tmr->Enabled = false;
        }
        void ChangeText(String s) // этот метод вызывать при необходимости сменить текст...
        {
            if(Caption != s)
            {
                rgb = 0;
                FHide = true; tmr->Enabled = true;
                while(tmr->Enabled)
                {
                    Sleep(1);
                    Application->ProcessMessages();
                }
                Caption = s;
                FHide = false; tmr->Enabled = true;
                while(tmr->Enabled)
                {
                    Sleep(1);
                    Application->ProcessMessages();
                }
            }
        }
    };
};
#define TLabel Transparent_Label::TLabel
, можно сделать и более красиво, чтобы не быть привязанным к циклам... Как будет время - попробую набросать еще один вариант.
1
0 / 0 / 0
Регистрация: 09.04.2017
Сообщений: 12
01.03.2019, 16:44  [ТС]
Разве что разбить один лейбл на строки и их начальный цвет перед проявлением подстраивать под цвет заднего фона за каждой строкой, потому что фон (вертикально) градиентный.. А однотонным делать его не хочется.

Попробую разобраться на днях в перехватчике выше, может всё идеально выйдет. Откланялся за помощь.
0
 Аватар для qppq
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 780
Записей в блоге: 2
05.03.2019, 11:50
примерчик тут
Вложения
Тип файла: 7z Project1.7z (7.9 Кб, 8 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.03.2019, 11:50
Помогаю со студенческими работами здесь

Вертикальный текст в TLabel
Кто знает, как можно сделать вертикальный текст в TLabel?

Как скопировать текст из TEdit в TLabel?
Создать проект, в котором данные, введенные в поле Edit дублируются в компонент Label. Название темы должно быть содержательным. Название...

При нажатии на TLabel вставить текст в TMemo
Помогите написать код, а то я крапик .-. Короче, вот скрин и что мне нужно: когда при нажатии на определенный текст, мне выбивало в...

Как программно удалить весь текст из TLabel?
Здравствуйте, пожалуйста подскажите, как программно удалить весь текст из компонента TLabel, если у меня Delphi Seattle.

Определить на сколько строк разбит текст в TLabel (WordWrap = True)
Возможно ли в Delphi определить на сколько строк разбит текст при WordWrap := True; или определить высоту Caption у Label при нескольких...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru