Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

MediaPlayer [D7, Win95/98, WinME, Win2k, WinXP]


kalista ©   (2004-03-18 19:10:00) 

Есть MediaPlayer в свойстве Display указан Panel1.
Если при просмотре видео нажать паузу и минимизировать форму или накрыть ее другим окном, а потом сделать форму активной, то на Panel1 не будет картинки.
Как можно избавиться от пропадания картинки при паузе?


clover   (2004-04-15 17:51:00) [1]

Можно скопировать Canvas панели в Panel1.Brush.Bitmap той панели, где происходит прорисовка. Тогда не придется потом прорисовывать картинку на панель заново. Она сама будет ;) и создавать придется Panel1.Brush.Bitmap, как бы уже существующий.


Думкин   (2004-04-05 06:11:00) [2]

uses Windows?


Kalista   (2004-04-04 17:21:00) [3]

Undeclareted "BitBlt", "ReleaseDC", "EndPaint"

А нельзя обойтись без создания нового компанента?


Думкин   (2004-03-25 06:58:00) [4]

Панель не от медиаплееера, а просто панель на которой идет отрисовка.

Сохранять зачем в TImage? Уж лучше TBitMap. Попробуй это:

TDemoMyPanel    = class(TPanel)
      private
       FUseCustom : boolean;
       FBM1 : TBitMap;
       procedure SetUseCustom(Value : boolean);
      protected
       procedure WMMPaint(var MSg : TMessage); message WM_Paint;
      public
       property UseCustom : boolean read FUseCustom write SetUseCustom;
       constructor Create(AOwner: TComponent);override;
       destructor Destroy; override;
     end;
//--------------------
constructor TDemoMyPanel.Create;
begin
    inherited;
    FBM1 := TBitMap.Create;
    FUseCustom := false
end;
destructor TDemoMyPanel.Destroy;
begin
    FBM1.free;
    inherited
end;
procedure TDemoMyPanel.WMMPaint;
var
 ps : TPaintStruct;
 DC : HDC;
begin
    if FUseCustom then begin
     DC := BeginPaint(Handle, ps);
     BitBlt(DC,0,0,ClientWidth,ClientHeight,FBM1.Canvas.Handle,0,0,SrcCopy);
     EndPaint(Handle, ps)
    end else inherited
end;
procedure TDemoMyPanel.SetUseCustom(Value : boolean);
var DC : HDC;
begin
    FUseCustom := Value;
    if (FUseCustom) then begin
     FBM1.Width := ClientWidth;
     FBM1.Height := ClientHeight;
     DC := GetDC(Handle);
     BitBlt(FBM1.Canvas.Handle,0,0,ClientWidth,ClientHeight,DC,0,0,SrcCopy);
     ReleaseDC(Handle,DC);
     Invalidate
    end
end;


Kalista   (2004-03-24 14:59:00) [5]

Помогите получить картинку с панели от медиаплейера.

 Image1.Canvas.CopyRect(Image1.Canvas.ClipRect, Panel2.Brush.Bitmap.Canvas, Panel2.Brush.Bitmap.Canvas.ClipRect);
 - Выдоёт Acces violation

 Image1.Picture.Bitmap :=Panel2.Brush.Bitmap;
 - Image получает пустую панель (нет картинки)

Может есть другие способы.


Думкин   (2004-03-19 13:29:00) [6]

В смысле? У тебя есть какое-то "нехорошее" событие. В этот момент сдираешь с канвы и сохраняешь во временном хранилище.
А сдирать - например BitBlt.


Kalista   (2004-03-19 08:57:00) [7]

>Думкин
Как получить картинку с панели?


Думкин   (2004-03-18 20:08:00) [8]

Я ловил эти моменты и сохранял картинку с панели.
При ее прорисовке в паузе или стопе плеера рисовал картинку.
А пропадание картинки - вполне естественно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо