关于自定义控件添加TBitmap变量的问题

思驿软件 2012-06-18 04:11:55
一个自定义控件
FItemPic: TBitmap; //添加了一个变量存图片

property ItemPic: TBitmap read FItemPic write SetItemPic; //设置了对外

procedure T****.SetItemPic(Value: TBitmap); //对外的赋值
begin
FItemPic.Assign(Value);
end;

T****.create; //控件的创建
FItemPic := TBitmap.Create;

T****.Destroy; //控件释放
FItemPic.Free;

T****.save; //保存(这个用于上一步、下一步的操作)还有其他的
WriteItemPic(Stream,ItemPic);

T****.load; //读取(这个用于上一步、下一步的操作)还有其他的
ItemPic.Assign(ReadItemPic(Stream));

//以下是保存、读取的两个函数,这两个不知道怎么写???
procedure WriteItemPic(Stream: TStream; const S: TBitmap); //这个有问题
var
L: Word;
begin
L := SizeOf(S) { * SizeOf(Char) } ;
if L > $FFFF then
L := $FFFF;
Stream.WriteBuffer(L, SizeOf(Word));
if L > 0 then
Stream.WriteBuffer(S, L);
end;

function ReadItemPic(Stream: TStream): TBitmap; //这个有问题
var
L: Word;
begin
Stream.ReadBuffer(L, SizeOf(TBitmap));
// SetString(Result, PChar(nil), L);
// SetString(Result, PAnsiChar(nil), L);
if L > 0 then
Stream.ReadBuffer(Result, L);
end;
...全文
99 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
思驿软件 2012-06-19
  • 打赏
  • 举报
回复
只是不知道怎么改
思驿软件 2012-06-19
  • 打赏
  • 举报
回复
procedure WriteItemPic(Stream: TStream; const S: AnsiString); // keyii
var
L: Integer;
begin
L := Length(S) { * SizeOf(Char) } ;
if L > $FFFF then //问题存在于这里
L := $FFFF;
Stream.WriteBuffer(L, SizeOf(Word));
if L > 0 then
Stream.WriteBuffer(S[1], L);
end;
newfang 2012-06-19
  • 打赏
  • 举报
回复
看看是不是你那自定义控件带的黑边·~如果不加载图片会不会有
bdmh 2012-06-19
  • 打赏
  • 举报
回复
黑边是图片本身就有,还是你自己给控件画上去的呢或者说控件自带的呢
思驿软件 2012-06-19
  • 打赏
  • 举报
回复
问题已经解决,只是又出了个问题。
读出显示的图片会在顶边出现黑边
思驿软件 2012-06-18
  • 打赏
  • 举报
回复
请帮忙!谢谢

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧