Форум: "WinAPI";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
Внизкак IPicture сохранить в файл (BMP)? Найти похожие ветки
← →
Igit (2003-11-22 13:58) [0]как
← →
Бином Ньютоныч (2003-11-22 17:07) [1]А SaveAsFile на что?
← →
Igit (2003-11-22 17:28) [2]В msdn это
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/htm/ctin_p_2did.asp
SaveAsFile(
IStream,//Pointer to stream where picture writes its data
fSaveMemCopy, //Indicates whether to save the picture
//in memory
pcbSize //Receives a pointer to the number of bytes written
//to stream
);
Я так понял она сохраняет картинку в IStream, a если у меня в IPicture не bmp а jpg? Или это без разници?
И как потом из IStream в файл перегнать?
← →
Igit (2003-11-22 17:39) [3]про OleSavePictureFile в MSDN ничего не нашел...
← →
Бином Ньютоныч (2003-11-22 18:37) [4]так попробуй:
IPict: IPicture;
IStm: IStream;
Stm: TMemoryStream;
Pict: TOicture;
Bmp: TBitmap;
Sz: integer;
Stm:=TmemoryStream.Create;
IStm:=TStreanAdapter.Create(Stm);
IPict.SaveAsFile(IStm, false, @Sz);
Stm.Position:=0;
Pict:=TPicture.Create;
Pict.LoadFromStream(Stm);
if not (Pict.Graphic is TBitmap) then
begin
Bmp:=TBitmap.Create;
Bmp.Assign(Pict.Graphic);
Bmp.SaveToFile(FileName);
Bmp.Free;
end
else
Pict.Bitmap.SaveToFile(FileName);
Только я не роверял, расскажи что получилось
← →
Бином Ньютоныч (2003-11-22 18:52) [5]Ага, с TPicture проблемс:( Вместо него вот это используй
uses
SysUtils, Classes, Graphics;
type
TMultiFmtPicture = class(TPicture)
public
{ Public declarations }
procedure LoadFromStream(Stream: TStream);
procedure SaveToStream(Stream: TStream);
end;
implementation
type
TMReader = class(TReader)
private
FStream: TStream;
public
constructor Create(Stream: TStream; BufSize: Integer);
procedure DefineBinaryProperty(const Name: string;
ReadData, WriteData: TStreamProc;
HasData: Boolean); override;
end;
TMWriter = class(TWriter)
private
FStream: TStream;
public
constructor Create(Stream: TStream; BufSize: Integer);
procedure DefineBinaryProperty(const Name: string;
ReadData, WriteData: TStreamProc;
HasData: Boolean); override;
end;
const
SErrorParam = "Invalid Stream parameter!";
{ TMultiFmtPicture }
procedure TMultiFmtPicture.LoadFromStream(Stream: TStream);
var
Rd:TMReader;
begin
if not Assigned(Stream) then
raise Exception.Create(SErrorParam);
Rd:=TMReader.Create(Stream , 0);
try
DefineProperties(Rd);
Changed(Self);
finally
Rd.Free;
end;
end;
procedure TMultiFmtPicture.SaveToStream(Stream: TStream);
var
Wr:TMWriter;
begin
if not Assigned(Stream) then
raise Exception.Create(SErrorParam);
Wr:=TMWriter.Create(Stream , 0);
try
DefineProperties(Wr);
finally
Wr.Free;
end;
end;
{ TMWriter }
constructor TMWriter.Create(Stream: TStream; BufSize: Integer);
begin
inherited;
FStream:=Stream;
end;
procedure TMWriter.DefineBinaryProperty(const Name: string; ReadData,
WriteData: TStreamProc; HasData: Boolean);
begin
WriteData(FStream);
end;
{ TMReader }
constructor TMReader.Create(Stream: TStream; BufSize: Integer);
begin
inherited;
FStream:=Stream;
end;
procedure TMReader.DefineBinaryProperty(const Name: string; ReadData,
WriteData: TStreamProc; HasData: Boolean);
begin
ReadData(FStream);
end;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c