Компонент отрисовывае на канве JPEGImage - загружается из потока в конструкторе и отрисовывается на канве
Код:
type
TTumbnale = class(TGraphicControl)
----------------------
protected
Img: TJPEGImage;
public
constructor Create(AOwner:TComponent; AName:TComponentName;
ImgStream:TMemoryStream);reintroduce;
procedure Paint;override;
end;
implementation
constructor TTumbnale.Create(AOwner:TComponent; ImgStream:TMemoryStream);
begin
inherited Create(AOwner);
Parent:= AOwner as TWinControl;
Img:= TJPEGImage.Create;
Img.LoadFromStream(ImgStream);
end;
procedure TTumbnale.Paint;
begin
inherited Paint;
Canvas.StretchDraw(Rect(2,2,242,182),Img);
end;
Загружаю картинку в поток - IdHTTP.Get, получаю "jpeg error #42"
Код:
procedure TForm1.Button2Click(Sender: TObject);
var t: TTumbnale; s: TMemoryStream; h: TIdHTTP;
begin
s:= TMemoryStream.Create;
h:= TIdHTTP.Create(Self);
h.HandleRedirects:= True;
h.Get('http://fobr.ru/wp-content/uploads/2013/11/zapr_0.jpg', s);
t:= TTumbnale.Create(ScrollBox1, 'tumb1', s); //здесь ошибка 42
s.Free; h.Free;
end;
проверяю - файл сохраняется
Код:
begin
s:= TMemoryStream.Create;
h:= TIdHTTP.Create(Self);
h.HandleRedirects:= True;
h.Get('http://fobr.ru/wp-content/uploads/2013/11/zapr_0.jpg',s);
s.SaveToFile('Temp\zapr_0.jpg'); //Файл сохраняется
s.Free; h.Free;
end;
Загружаю картинку в поток из файла все отрисовывается
Код:
begin
s:= TMemoryStream.Create;
s.LoadFromFile('Temp\zapr_0.jpg');
t:= TTumbnale.Create(ScrollBox1,'tumb1', s); //здесь все прекрасно срабатывает
s.Free;
end;
делать через сохранение файла - вообще не кошерно
и что это за ошибка #42?