Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Текст на экране   Найти похожие ветки 

 
Инкогнито   (2004-01-06 17:40) [0]

Здраствуйте МАСТЕРА!
 Мне надо сделать, чтобы текст рисовался на экране поверх всего (чего бы там не происходило), а потом через определенное время стирался.
 Помогите пожалуйста.
Зарание спасибо...


 
Mihey ©   (2004-01-06 18:00) [1]

Предлагаю такой способ. Создаёшь TPicture, на его Bitmap выводишь текст через Canvas.TextOut. Цвет фон аделай по цвету формы. Затем рисуешь текст на канву формы. Затем содаёшь регион, который по форме равен тексту (как бы делаем форму прозрачной). Это можно сделать следующими функциями:

Делаем регион:

procedure CropWindow( Handle: HWnd; Picture : TPicture );
var
 hrgn, hrgn1 : integer;
 hdc : integer;
 x, y : integer;
 Color : TColor;
begin
//  Color := Picture.Bitmap.Canvas.Pixels[ 0, 0 ];
 Color := clWhite;
 hdc := GetDC( Handle );
 hrgn := CreateRectRgn( 0, 0, Picture.Graphic.Width, Picture.Graphic.Height );
 for x := 1 to Picture.Graphic.Width do
   for y := 1 to Picture.Graphic.Height do
     if Picture.Bitmap.Canvas.Pixels[ x - 1, y - 1 ] = Color then begin
       hrgn1 := CreateRectRgn( x - 1, y - 1, x, y);
       CombineRgn( hrgn, hrgn, hrgn1, RGN_DIFF );
       DeleteObject( hrgn1 );
     end;
 SetWindowRgn( Handle, hrgn, true );
 //DeleteObject( hrgn );
 ReleaseDC( Handle, hdc);
end;

Всё назад:

procedure UncropWindow( Handle: HWnd; Picture : TPicture );
var
 hrgn : integer;
 hdc : integer;
begin
 hdc := GetDC( Handle );
 hrgn := CreateRectRgn( 0, 0, Picture.Graphic.Width , Picture.Graphic.Height );
 SetWindowRgn( Handle, hrgn, true );
 ReleaseDC( Handle, hdc );
end;

В качестве хэндла указываешь хэндл формы. Ну и делаешь форму Stay On Top, как это сделать - спроси в других конференциях, т.к. боюсь только режим StayOnTop тут не поможет.

И всё.


 
Инкогнито   (2004-01-07 09:12) [2]

Огромное спасибо, Mihey !


 
марсианин ©   (2004-01-10 00:43) [3]

на DelphiGFX красивый пример есть Hello world.. если не ошибаюсь - самый последний в Samples

правда там окно не поверх всего. попробуй вызывать SetWindowPos при инициализации окна со вторым параметром HWND_TOPMOST или чн похожее


 
Mihey ©   (2004-01-10 01:39) [4]

http://delphigfx.mastak.ru/samples7.htm

Да уж, красивый. В описании сказано:
"Программа демонстрирует создание регионов на базе путей (paths)."

Т.е. практически мой способ. Регионы, как уж без них. Ну ещё можно оверлеи юзать, но это на профессионалов.


 
fashist ©   (2004-01-13 16:26) [5]

можно функциями API можно функциями OpenGL выбери какими и напиши на майл я тебе пришлю полоное решение OK?



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.048 c
1-1081187071
3APA3A
2004-04-05 21:44
2004.04.25
Сколько времени прошло с момента создания файла...


1-1081425345
DL
2004-04-08 15:55
2004.04.25
Цветной текст


7-1078177032
Sergeika
2004-03-02 00:37
2004.04.25
Как отловить нажатие мультимедиа клавиши на клавиатуре?


1-1081279928
Nevil
2004-04-06 23:32
2004.04.25
Выделенные Items в ListView нарисованные на канвасе


14-1081176951
Digitman
2004-04-05 18:55
2004.04.25
Роль полит.лидеров в становлении/крахе отеч.комп.индустрии





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский