Форум: "Media";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
ВнизMediaPlayer Найти похожие ветки
← →
kalista (2004-03-18 19:10) [0]Есть MediaPlayer в свойстве Display указан Panel1.
Если при просмотре видео нажать паузу и минимизировать форму или накрыть ее другим окном, а потом сделать форму активной, то на Panel1 не будет картинки.
Как можно избавиться от пропадания картинки при паузе?
← →
Думкин © (2004-03-18 20:08) [1]Я ловил эти моменты и сохранял картинку с панели.
При ее прорисовке в паузе или стопе плеера рисовал картинку.
А пропадание картинки - вполне естественно.
← →
Kalista (2004-03-19 08:57) [2]>Думкин
Как получить картинку с панели?
← →
Думкин © (2004-03-19 13:29) [3]В смысле? У тебя есть какое-то "нехорошее" событие. В этот момент сдираешь с канвы и сохраняешь во временном хранилище.
А сдирать - например BitBlt.
← →
Kalista (2004-03-24 14:59) [4]Помогите получить картинку с панели от медиаплейера.
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-25 06:58) [5]Панель не от медиаплееера, а просто панель на которой идет отрисовка.
Сохранять зачем в 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-04-04 17:21) [6]Undeclareted "BitBlt", "ReleaseDC", "EndPaint"
А нельзя обойтись без создания нового компанента?
← →
Думкин © (2004-04-05 06:11) [7]uses Windows?
← →
clover © (2004-04-15 17:51) [8]Можно скопировать Canvas панели в Panel1.Brush.Bitmap той панели, где происходит прорисовка. Тогда не придется потом прорисовывать картинку на панель заново. Она сама будет ;) и создавать придется Panel1.Brush.Bitmap, как бы уже существующий.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c