首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问个有关问题

2012-02-04 
请教个问题!Delphi(Pascal) code为了方便修改 持久化自定义类typeMycalss(TComponent)privateFTestBmp:St

请教个问题!

Delphi(Pascal) code
   为了方便修改 持久化自定义类   type      Mycalss=(TComponent)   private     FTestBmp:String;       procedure SetTestBmp(Value:String);////////都是默认属性   published     property TestBmp:String Read FTestBmp Write SetTestBmp;----------------   调用时 将Bmp图片流化到StringStream;   var     My:MyClass;   var     bmp:TBitmap;     StrStream:TStringStream;   begin     bmp:=TBitMap.Create;     StrStream:=TStringStream.Create('')     Bmp.LoadFromFile('xxxx');     Bmp.SavetoStream(StrStream);     StrStream.position:=0;     My.TestBmp:=StrStream.DataString;   end;回调图片 :   var     StrStream:TStringStream;   begin      StrStream:=TStringStream.Create(My.TestBmp);      StrStream.position:=0;      Image1.Picture.BitMap.LoadfromStream(StrStream);    end;问题出现在回调上,如果不持久化,在创建自定义类时,执行流化后,调用该类的属性My.TestBmp生成图片成功。持久化后 图片变形严重,错位. 比较原先流化时生成字符串长度发现长度不一1078  和1054  就这个问题请教各位,问题可能出现在什么地方,查看Bitbtn 持久化bitmap过程很复杂 而且里面有些类不对外公布,无法调用,因此想这样简单处理没想到遇到这样的问题。   


[解决办法]
你的TestBmp属性定义的是一个string而你赋值是一个stream,你直接定义成stream或使用StrStream.datastring进行赋值
[解决办法]
支持一下,怀疑一下,是不是对于非固定长度数据(string)持久化时会有问题
[解决办法]
刚才我看My.TestBmp:=StrStream.DataString;的strstream后面怎么没有DataString?



Image1.Picture.BitMap.LoadfromStream(StrStream); //你这样加载bitmap根据你的image大小拉伸了


[解决办法]
帮顶一下下
[解决办法]
恢復圖片時,要先把字串轉一下,即由16進制轉為2進制(不然會被認為僅僅是字串而已,跟原來的圖片就會造成出入),再寫到內存流,然后再load。

热点排行