请问Graphic.LoadFromStream为什么会报内存错误? |
缺席
|
rainxie
一般會員 發表:20 回覆:27 積分:14 註冊:2008-03-13 發送簡訊給我 |
我想让Timage从memory里读取图片,所以写了下面的代码进行测试,
因为图片格式为emf,所以用graphic.loadfromstream,好像不太对, 点击Button1时在红色代码处报错“Access violation at address 00462B3 in module 'Project1.exe'” 想向大家请教下,不好意思,涉猎较少,问的很初级,谢谢了! unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; procedure Button1Click(Sender: TObject); private public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var DestStream:TMemoryStream; begin DestStream:=TMemoryStream.Create; DestStream.LoadFromFile('D:\2.emf'); DestStream.Position:=0; image1.Picture.Graphic.LoadFromStream(DestStream); DestStream.Free; end; end. |
socat
一般會員 發表:1 回覆:4 積分:1 註冊:2008-07-13 發送簡訊給我 |
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; procedure Button1Click(Sender: TObject); private public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var DestStream:TMemoryStream; begin DestStream:=TMemoryStream.Create; DestStream.LoadFromFile('D:\2.emf'); Image1.Picture.Bitmap.LoadFromStream(DestStream); //这样可以载入 BMP 图片 DestStream.Free; end; end. 也可以先声明一个 jpg 或者 bitmap 变量, 利用变量载入后,再赋值给image 我计算机上没有emf图片 , 没有测试过 emf图片 希望能给你一些启示~ |
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
|
rainxie
一般會員 發表:20 回覆:27 積分:14 註冊:2008-03-13 發送簡訊給我 |
|
pprayer
高階會員 發表:35 回覆:185 積分:174 註冊:2002-03-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |