![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
По поводу GIF`а [D5, Win95/98]
Gerda © (2003-01-24 17:57:00)Дарова Мастера.
Поставил себе компонент GIFImage, нужно проделать такие действия:
1) Забацать скриншот экрана
2) сжать его в гиф
3) отослать этот гиф потоком через ServerSocket
4) принять на клиенте
5) ну и отобразить
по 1,4,5 вопросов нет, а вот как 2,3 ?? не знаю. Многое перепробовал ничего не получается, мож кто поможет ??
Заранее благодарен.
З.Ы. Вот так я пытаюсь это сделать:
bmp := TBitmap.Create;
bmp.Width := Screen.Width;
bmp.Height := Screen.Height;
bmp.PixelFormat:=pf24bit;
ScreenDC:=GetDC(GetDesktopWindow);
BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, ScreenDC, 0, 0, SRCCopy);
Stream:=TmemoryStream.Create;
GIFImage.SaveToStreamSingle(Stream, bmp, false, false, clWhite);
Socket.SendStream(Stream, Stream.Size);
Stream.Free;
ReleaseDC(Handle, ScreenDC);
bmp.Free;
Gerda (2003-01-27 20:17:00) [1]Меня пока это не интересует...
XmPL (2003-01-27 16:26:00) [2]может подскажешь как собираешься делать скриншот если на данный момент работает OpenGL или DirectX ?
Gerda (2003-01-27 16:14:00) [3]Ну че никто не знает ??
Gerda (2003-01-24 18:47:00) [4]И еще на клиенте я принимаю так:
Stream := TMemoryStream.Create;
Screen.Cursor := crHourglass;
try
while True do begin
nReceived := Socket.ReceiveBuf (Buffer, sizeof (Buffer));
if nReceived <= 0
then Break
else Stream.Write (Buffer, nReceived);
Sleep (200); // delay (200 milliseconds)
end;
Stream.Position := 0; // reset and load the temporary file
Form2.GIFImage1.LoadFromStream(Stream);
finally
Stream.Free;
Screen.Cursor := crDefault;
end;
Gerda (2003-01-24 18:41:00) [5]Да в строке Socket.SendStream(Stream, Stream.Size); я переборщил там тока Socket.SendStream(Stream);