![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]Я ловил эти моменты и сохранял картинку с панели.
При ее прорисовке в паузе или стопе плеера рисовал картинку.
А пропадание картинки - вполне естественно.