delphi 结构体的使用、Tbitmap和TMemoryStream的转换


本文整理自网络,侵删。

 
一、定义结构体

type
  Tfrequency_band_list = class
    frequency_band_name: string;
    frequency_band_pic_color: string;
    frequency_band_pic_Stream: TMemoryStream;
  end;
二、结构体的使用

//全局变量
var
  frequency_band_list: array of Tfrequency_band_list;//定义变量
  
//界面初始化时
var
  bmp: Tbitmap;
begin
  SetLength(frequency_band_list, 5);//分配存储空间
  bmp := Tbitmap.Create;//初始化Tbitmap
  for i := 1 to length(frequency_band_list) - 1 do//存储空间是从0开始的,个人习惯从1开始
  begin
    frequency_band_list[i] := Tfrequency_band_list.Create;//结构图初始化
    frequency_band_list[i].frequency_band_pic_Stream := TMemoryStream.Create;//内存流初始化
    ImageList3.GetBitmap(i, bmp);//借用了一个imagelist保存了一部分相同大小的图片,为BMP变量赋值
    bmp.PixelFormat := pfDevice;
    bmp.PixelFormat := pf24bit;//设定24位,这段程序是为SPEEDBUTTON加透明图片的,所以用的24位
    bmp.SaveToStream(frequency_band_list[i].frequency_band_pic_Stream); //将BMP保存到内存流中
    frequency_band_list[i].frequency_band_name := '1';//赋值
    frequency_band_list[i].frequency_band_pic_color := '1';
  end;
  
  bmp.Free;//用完后释放
end;
 
三、使用

procedure TForm2.Button36Click(Sender: TObject);
var
  Stream: TMemoryStream;//定义这个变量主要是为了演示用法,直接用全局定义的也可以
  bmp: Tbitmap;
begin
  //Stream := TMemoryStream.Create;因为定义了Stream变量,并且进行了赋值,所以不进行初始化
  frequency_band_list[1].frequency_band_pic_Stream.Position := 0;//用之前先调指针
  Stream := frequency_band_list[1].frequency_band_pic_Stream;//赋值
  Stream.Position := 0;//这句可以不须要,内存流变量赋值应该是直接给的指针,这个时候其实两个内存流变量指向的是一个地址,改一个就相当于改另一个
  bmp := Tbitmap.Create;
  bmp.LoadFromStream(Stream);
  bmp.PixelFormat := pfDevice;
  bmp.PixelFormat := pf24bit;
  SpeedButton1.glyph.Assign(bmp);//speedbutton类型的按钮这样加载图片
  //stream.Free;//因为是同一个地址,所以这句也取消了,否则两个变量一起被释放了
  bmp.Free;
end;
 
--------------------- 
作者:以后换名字 
来源:CSDN 
原文:https://blog.csdn.net/weixin_44387646/article/details/87935335 
版权声明:本文为博主原创文章,转载请附上博文链接!

相关阅读 >>

Delphi 超短精简进制转换

Delphi for 循环输出 a-z

Delphi 过滤字符串首位特殊符号

Delphi 中压缩流和解压流的应用

Delphi判断sql server 服务是否断开

Delphi 检查声卡是否安装

Delphi http json 验证token

Delphi 字符串加密解密单元

Delphi 时间差函数及部分字符串与日期时间相互转换的函数

Delphi格式化wmi中的datetime

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...