Здравствуйте можете помочь? делаю скрин рабочего стола. Code: procedure TForm1.Timer1Timer(Sender: TObject); var bmp: TBitmap; DC: HDC; Jpg: TJpegImage; Begin Try bmp:= TBitmap.Create; Jpg:= TJpegImage.Create; bmp.Height:=Screen.Height; bmp.Width:=Screen.Width; DC:=GetDC(0); bitblt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY); Jpg.Assign(Bmp); Jpg.SaveToFile('test.jpg'); image1.Picture.Assign(Jpg); ReleaseDC(0, DC); finally Bmp.Free; jpg.Free; [COLOR=DarkOrange]form1.Image1.Picture:=nil;[/COLOR] не знаю куда ее поставить???? End; end; все работает но только есть глюк: первый снимак делает хорошо, а остальные начинают уменьшатся. если ставлю nil то вообще ничго не появляется. как делать обновление???? Спасибо!
Они не уменьшаются. Ты подумай: ты делаешь скрин. а потом скрин в котором есть скрин. А потом скрин скрина скрина... и тд. Все вообщем норм, это просто оптическая иллюзия.
глюк и как хоть с ней справлятся? что делать как сделать правельно. чтобы не из скрина скрин делать, а скрин рабочего стола? а то видео ни какого не получается а как канву почистить незнаю. вернее знаю тока незнаю как в код в писать. Спасибо!
подвигал подвигал я окном! вылетает табличка, точно не перевел, но в переводчике - "что то там закончилось" ладно потом испралю а как передать через сокеты изображение из server -> Image1 в client -> image1 без сохранение файла. Сервер Code: var Size: integer; P: ^Byte; begin MS := TMemoryStream.Create; // Создаём буфер для файла MS.LoadFromFile(Edit1.Text); // Загружаем файл в буфер // Посылаем информацию о файл (команда # название # размер) ServerSocket1.Socket.Connections[0].SendText('file#'+Edit1.Text+'#'+IntToStr(MS.Size)+'#'); MS.Position := 0; // Переводим каретку в начало файла P := MS.Memory; // Загружаем в переменную "P" файл Size := ServerSocket1.Socket.Connections[0].SendBuf(P^, MS.Size); // Посылаем файл // Выводим прогресс ProgressBar1.Position := Size*100 div MS.Size; StatusBar1.SimpleText := 'Отправлено '+IntToStr(Size)+' из '+IntToStr(MS.Size)+' байт' Клиент Code: procedure TForm1.Writing(Text: string); begin if MS.Size < Size then // Если принято байт меньше размера файла, то... MS.Write(Text[1], Length(Text)); // Записываем в буфер // Выводим прогресс закачки файла ProgressBar1.Position := MS.Size*100 div Size; StatusBar1.SimpleText := 'Принято '+IntToStr(MS.Size)+' из '+IntToStr(Size); if MS.Size = Size then // Если файл принят, то... begin Receive := false; // Переводим клиента в нормальный режим MS.Position := 0; // Переводим каретку в начало буфера MS.SaveToFile(Name); // Сохраняем файл image1.Picture.LoadFromFile(name); ClientSocket1.Socket.SendText('end'); // Посылаем команду "end", то есть файл принят MS.Free; // Убиваем буфер StatusBar1.SimpleText := 'Файл принят'; end; end; procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var Rtext: string; // Принятый текст begin Rtext := Socket.ReceiveText; if Receive then // Если клиент в режиме приёма файла, то... Writing(RText) // Записываем данные в буфер else // Если клиент не в режиме приёма файла, то... if Copy(Rtext, 0, Pos('#', Rtext) -1) = 'file' then // Если это файл, то... begin MS := TMemoryStream.Create; // Создаём буфер для файла Delete(Rtext, 1, Pos('#', Rtext)); // Определяем имя файла Name := Copy(Rtext, 0, Pos('#', Rtext) -1); // Определяем имя файла Delete(Rtext, 1, Pos('#', Rtext)); // Определяем размер файла Size := StrToInt(Copy(Rtext, 0, Pos('#', Rtext) -1)); // Определяем размер файла Delete(Rtext, 1, Pos('#', Rtext)); // Удаляем последний разделитель Label1.Caption := 'Размер файла: '+IntToStr(Size)+' байт'; // Выводим размер файла Label2.Caption := 'Имя файла: '+Name; // Выводим имя файла Receive := true; // Переводим сервер в режим приёма файла Writing(RText); // Записываем данные в буфер end; end; Спасибо!