05/03/10 19:34
systemgvp
salve,
ho creato un piccolo media player che utilizza il componente standard di delphi TMediaPlayer e un Tpane per visualizzare i video.
Mi serve sapere come è possibile catturare un fermo immagine dal video in maniera veloce, perchè al momento untilizzo una procedura un pò laboriosa del tipo:
procedure TForm1.catturaClick(Sender: TObject);
var DC: HDC; xi, yi, xf, yf: integer; bit : TBitmap;
begin
//Prendo il DC del desktop
DC := GetWindowDC(GetDesktopWindow);
//imposta l'area da catturare
xi:=form1.Left+8+panel1.Left;
yi:=form1.Top+30+panel1.Top;
xf:=xi+panel1.Width;
yf:=yi+panel1.Height;
//Creo una bitmap con le dimensione del desktop
Bit := TBitmap.Create;
Bit.Width := panel1.Width;
Bit.Height := panel1.Height;
//"Catturo" lo schermo sulla bitmap
BitBlt(bit.Canvas.Handle,-xi,-yi,xf,yf,DC,0,0,SRCCOPY);
//Assegno come immagine del TImage la bitmap
Image1.Picture.Graphic := bit;
//Rilascio il DC del Desktop e libero la bitmap
ReleaseDC (0,DC);
Bit.Free;
if (grigio.Checked=true) then bmptosepia(image1.picture.bitmap, strtoint(edit2.Text));
end;
che cattura l'immagine di una parte di schermo in una Timage, ma ho necessità di qualcosa di più veloce.
ho creato un piccolo media player che utilizza il componente standard di delphi TMediaPlayer e un Tpane per visualizzare i video.
Mi serve sapere come è possibile catturare un fermo immagine dal video in maniera veloce, perchè al momento untilizzo una procedura un pò laboriosa del tipo:
procedure TForm1.catturaClick(Sender: TObject);
var DC: HDC; xi, yi, xf, yf: integer; bit : TBitmap;
begin
//Prendo il DC del desktop
DC := GetWindowDC(GetDesktopWindow);
//imposta l'area da catturare
xi:=form1.Left+8+panel1.Left;
yi:=form1.Top+30+panel1.Top;
xf:=xi+panel1.Width;
yf:=yi+panel1.Height;
//Creo una bitmap con le dimensione del desktop
Bit := TBitmap.Create;
Bit.Width := panel1.Width;
Bit.Height := panel1.Height;
//"Catturo" lo schermo sulla bitmap
BitBlt(bit.Canvas.Handle,-xi,-yi,xf,yf,DC,0,0,SRCCOPY);
//Assegno come immagine del TImage la bitmap
Image1.Picture.Graphic := bit;
//Rilascio il DC del Desktop e libero la bitmap
ReleaseDC (0,DC);
Bit.Free;
if (grigio.Checked=true) then bmptosepia(image1.picture.bitmap, strtoint(edit2.Text));
end;
che cattura l'immagine di una parte di schermo in una Timage, ma ho necessità di qualcosa di più veloce.
aaa