Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

как 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 вся ветка

Текущий архив: 2004.01.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
3-93362
WG
2003-12-30 12:13
2004.01.29
Как упорядочить записи в БД по алфавиту ?


6-93608
S@shka
2003-11-18 15:30
2004.01.29
Передача аудио по сети


1-93421
sashok
2004-01-16 19:34
2004.01.29
Работа с несколькими объектами


1-93513
Agent[007]
2004-01-12 21:30
2004.01.29
TStrings to TBitmap


3-93374
Крутыш
2003-12-31 00:00
2004.01.29
Проблемы Access+ADO