Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.006 c
9-93326
Makep
2003-07-11 00:08
2004.01.29
Странные ошибки!!! =(( DirectX


14-93624
Думкин
2004-01-09 07:15
2004.01.29
С днем рождения! 9 января.


3-93392
Vemer
2003-12-30 14:19
2004.01.29
Использование параметра вместе с LIKE


1-93574
mixa
2004-01-17 04:43
2004.01.29
Как изменить дату на компьютере?


3-93346
Stas
2004-01-04 13:46
2004.01.29
Установка MDAC





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский