Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.09.2009, 20:16
Prof-x Prof-x вне форума
Прохожий
 
Регистрация: 24.09.2009
Сообщения: 8
Репутация: 10
По умолчанию Фон вокруг букв

Здравствуйте ув. знатоки))
Программирую на delphi не давно.
Цель: бегущая строка по видео.
Что сделано: все работает.
Проблема: куски белого фона вокруг букв.
Оч. прошу помочь.
Заранее спасибо.
Вложения-исходники.
Вложения
Тип файла: rar 111.part1.rar (58.6 Кбайт, 7 просмотров)
Тип файла: rar 111.part2.rar (58.6 Кбайт, 5 просмотров)
Тип файла: rar 111.part3.rar (56.0 Кбайт, 5 просмотров)
Ответить с цитированием
  #2  
Старый 25.09.2009, 04:13
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от Prof-x
Здравствуйте ув. знатоки))
Программирую на delphi не давно.
Цель: бегущая строка по видео.
Что сделано: все работает.
Проблема: куски белого фона вокруг букв.
Оч. прошу помочь.
Заранее спасибо.
Вложения-исходники.
в чём разрабатываеш? исходники качать не очень хочется, опиши как именно ты рисуеш на видео, тупо GDI или фильтрами для кодека? с первым вариантом всё просто, перед рисованием текста (Canvas.TextOut) установи тип браша на Clear (Canvas.Brush.Style := bsClear). со вторым вариантом я ничем не смогу помоч
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #3  
Старый 25.09.2009, 13:52
Prof-x Prof-x вне форума
Прохожий
 
Регистрация: 24.09.2009
Сообщения: 8
Репутация: 10
По умолчанию

Пишу на 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;
Изображения
Тип файла: jpg 123.jpg (15.9 Кбайт, 14 просмотров)

Последний раз редактировалось Prof-x, 25.09.2009 в 14:03.
Ответить с цитированием
  #4  
Старый 25.09.2009, 13:59
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от Prof-x
Пишу на 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;
в этом случае при создание буфера (bitmap) устаналивай глубину цвета на 32 бита, Bitmap.PixelFormat := pf32bit (честно не помню название, но примерно так), потому как битмап по умолчанию создаётся с 24 битами на пиксель.
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #5  
Старый 25.09.2009, 14:05
Prof-x Prof-x вне форума
Прохожий
 
Регистрация: 24.09.2009
Сообщения: 8
Репутация: 10
По умолчанию

тож самое скрин в предыдущем посту.
Ответить с цитированием
  #6  
Старый 25.09.2009, 14:09
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от Prof-x
тож самое скрин в предыдущем посту.
блин, вот в чём дело, я думал про квадратную рамку. в этом случае мне кажется поможет только GDI+ , он умеет рисовать с альфа каналами, тогда "рамки" не будет.
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #7  
Старый 25.09.2009, 14:13
Prof-x Prof-x вне форума
Прохожий
 
Регистрация: 24.09.2009
Сообщения: 8
Репутация: 10
Сообщение

Мне все же кажеться что эта рамка от формы, ну тоесть она немного цветом отличается от белого из-за этого не прозрачная.
Ответить с цитированием
  #8  
Старый 25.09.2009, 14:19
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

нет это от того что обычный GDI рисует без альфа каналами, и для плавного перехода он смешивает края с фоновым цветом. этот же эффект можно увидеть написав в паинте надпись и закрасить фон в другой цвет
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #9  
Старый 25.09.2009, 14:22
Prof-x Prof-x вне форума
Прохожий
 
Регистрация: 24.09.2009
Сообщения: 8
Репутация: 10
По умолчанию

Ну попробую посмотреть как на GDI+ реализовать
Ответить с цитированием
  #10  
Старый 25.09.2009, 20:41
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,531
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

Вот пример GDI - http://www.delphisources.ru/pages/so...path-text.html
Ответить с цитированием
  #11  
Старый 26.09.2009, 20:20
Prof-x Prof-x вне форума
Прохожий
 
Регистрация: 24.09.2009
Сообщения: 8
Репутация: 10
По умолчанию

Скачал пример, поставил прозрачность.
Результат тот же, а как попробовать без формы?
Надо заставить его думать что фон окна это то что показывает плеер.)
см. скрин.
Изображения
Тип файла: jpg 123.jpg (21.0 Кбайт, 7 просмотров)

Последний раз редактировалось Prof-x, 26.09.2009 в 20:26.
Ответить с цитированием
  #12  
Старый 26.09.2009, 22:02
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

скорей всего никак, по крайней мере если видео оверлэйное, то точно никак (тоесть можно реализовать фильтрами, но я здесь не смогу помочь).

* оверлэйное видео зная область вывода видео и цвет-ключ заменяет в этой области цвет-ключ (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  
Старый 26.09.2009, 23:19
Prof-x Prof-x вне форума
Прохожий
 
Регистрация: 24.09.2009
Сообщения: 8
Репутация: 10
По умолчанию

А вот это не решит проблему, или я что-то не так понял.
Код:
Как прикрепить свою форму к другому приложению 
--------------------------------------------------------------------------------


Для этого Вам понадобится переопределить процедуру 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  
Старый 26.09.2009, 23:50
Prof-x Prof-x вне форума
Прохожий
 
Регистрация: 24.09.2009
Сообщения: 8
Репутация: 10
По умолчанию

На счет фильтров ни чего путнего в нете не нашел, да и думаю реализовать сложно((
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:30.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter