![]() |
|
#1
|
|||
|
|||
![]() Здравствуйте ув. знатоки))
Программирую на delphi не давно. Цель: бегущая строка по видео. Что сделано: все работает. Проблема: куски белого фона вокруг букв. Оч. прошу помочь. Заранее спасибо. Вложения-исходники. |
#2
|
||||
|
||||
![]() Цитата:
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#3
|
|||
|
|||
![]() Пишу на BDS 2006 без .net.
На GDI, браш поставил. Форма прозрачная белая. Ни чего не изменилось. вот код Вложение скрин. Код:
procedure TForm1.FormCreate(Sender: TObject); begin txt := 'Я люблю DELPHI)))'; BitMap := TBitmap.Create; Bitmap.Width := Form1.Width; Bitmap.Height := form1.Height; Bitmap.Height := 100; Bitmap.Canvas.Brush.Color := clwhite; Bitmap.Canvas.Font.Name := 'Trebuchet MS'; Bitmap.Canvas.Font.Size := 35; Bitmap.Canvas.Font.Color := clGreen; //bitmap.TransparentColor:=clwhite; bitmap.Transparent:=true; TW := 100; X := Form1.Width; {if form1.BorderStyle = bsSizeable then Y := (form1.Height) div 2 - (bitmap.Canvas.Font.Size)div 2 - 100;} end; procedure TForm1.Timer1Timer(Sender: TObject); begin i := 2; Bitmap.Width := Form1.Width; Bitmap.Height := Form1.Height; Bitmap.Canvas.Polygon([Point(0, 0), Point(1280, 0), Point(1280, 767), Point(0, 767)]); X := X - i; if X <= (-TW * (font.Size div 2)) then X := Form1.Width; Canvas.Brush.Style := bsClear; Bitmap.Canvas.TextOut(X,Y,txt); Form1.Canvas.Draw(0,0,Bitmap); if form1.WindowState = wsMaximized then Y := (form1.Height) div 2 - (bitmap.Canvas.Font.Size); if form1.WindowState = wsNormal then Y := (form1.Height) div 2 - (bitmap.Canvas.Font.Size) div 2 - 35; end; Последний раз редактировалось Prof-x, 25.09.2009 в 14:03. |
#4
|
||||
|
||||
![]() Цитата:
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#5
|
|||
|
|||
![]() тож самое скрин в предыдущем посту.
|
#6
|
||||
|
||||
![]() Цитата:
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#7
|
|||
|
|||
![]() Мне все же кажеться что эта рамка от формы, ну тоесть она немного цветом отличается от белого из-за этого не прозрачная.
|
#8
|
||||
|
||||
![]() нет это от того что обычный GDI рисует без альфа каналами, и для плавного перехода он смешивает края с фоновым цветом. этот же эффект можно увидеть написав в паинте надпись и закрасить фон в другой цвет
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#9
|
|||
|
|||
![]() Ну попробую посмотреть как на GDI+ реализовать
|
#10
|
||||
|
||||
![]() Вот пример GDI - http://www.delphisources.ru/pages/so...path-text.html
|
#11
|
|||
|
|||
![]() Скачал пример, поставил прозрачность.
Результат тот же, а как попробовать без формы? Надо заставить его думать что фон окна это то что показывает плеер.) см. скрин. Последний раз редактировалось Prof-x, 26.09.2009 в 20:26. |
#12
|
||||
|
||||
![]() скорей всего никак, по крайней мере если видео оверлэйное, то точно никак (тоесть можно реализовать фильтрами, но я здесь не смогу помочь).
* оверлэйное видео зная область вывода видео и цвет-ключ заменяет в этой области цвет-ключ (color key) на собственно видео. именно поэтому не получится смешать текст с видео. копай под фильтры, так рисуются субтитры TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; Последний раз редактировалось AleD, 26.09.2009 в 22:05. |
#13
|
|||
|
|||
![]() А вот это не решит проблему, или я что-то не так понял.
Код:
Как прикрепить свою форму к другому приложению -------------------------------------------------------------------------------- Для этого Вам понадобится переопределить процедуру CreateParams у желаемой формы. А в ней установить params.WndParent в дескриптор окна, к которому Вы хотите прикрепить форму. ... = class(TForm) ... protected procedure CreateParams(var params: TCreateParams); override; ... procedure TForm2.Createparams(var params: TCreateParams); var aHWnd: HWND; begin inherited; {как-нибудь получаем существующий дескриптор} ahWnd := GetForegroundWindow; {а теперь:} params.WndParent := ahWnd; end; |
#14
|
|||
|
|||
![]() На счет фильтров ни чего путнего в нете не нашел, да и думаю реализовать сложно((
|