Koristim D7 i hocu da snimim sliku iz image1 (Timage) kontrole u TFileStream.
Pokusao sam sljedece:
var
Form1: TForm1;
Stream: TFileStream;
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
Stream := TFileStream.Create('c:\test.dat', fmCreate);
Image1.Picture.bitmap.SaveToStream(Stream);
Stream.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Stream := TFileStream.Create('c:\test.dat', fmOpenRead);
Image2.Picture.Bitmap.LoadFromStream(Stream);
Stream.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.picture.LoadFromFile('c:\slika.jpg');
end;
Kod se fino iskompajlira. Slika se ucita u image1 na samom pocetku. Poslije klika na button1 slika nestaje iz image1. Klikom na button2 slika se naravno ne ucita posto nista nije snimio.
Slican problem je i sljedeci:
var
Form1: TForm1;
UndoStream: TMemoryStream;
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
with Image1.Picture.Bitmap do
begin
// snimi prije izmjene
SaveToStream(UndoStream);
// crta liniju
Canvas.Pen.Color:=clBlue;
Canvas.Pen.Width := 20;
Canvas.MoveTo(10,10);
Canvas.LineTo(100,100);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// idi na pocetak stream-a da procitas sliku prije izmjene
UndoStream.Seek(0, soFromBeginning);
// cita sliku iz stream-a
Image1.Picture.Bitmap.LoadFromStream(UndoStream);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
UndoStream := TMemoryStream.Create;
Image1.picture.LoadFromFile('c:\slika.jpg');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UndoStream.free;
end;
Kod bi trebao da snimi sliku prije promjene (crtanja linije), nacrta liniju (button1), a zatim klikom na button2 ucitava iz memorije staru sliku i prikazuje je u image1. Isto tako se kod iskompajlira bez greske. Klikom na button1 nestaje slika iz image1. Linija se ne iscrta, a stara neizmjenjena slika klikom na button2 se ne prikazuje u image1.
U cemu je problem?!