Главная страница
    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.007 c
3-93340
SaperXL
2003-12-28 16:13
2004.01.29
Защита БД


7-93714
Morgan128
2003-11-12 01:18
2004.01.29
Распознание текста


6-93622
DAnton
2003-11-24 16:21
2004.01.29
Альтернатива net send?


1-93478
Seldon
2004-01-08 22:26
2004.01.29
Где происходит Exception?


1-93566
snake1977
2004-01-15 17:16
2004.01.29
MDI + DLL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский