zoukankan      html  css  js  c++  java
  • bmp和Variant的转换

    procedure TForm2.VariantToBMP(aValue : OleVariant;var aBmp:TBitmap); 
    var 
       Stream : TMemoryStream; 
    begin 
    try 
      Stream := TMemoryStream.Create;

      VariantToStream (aValue,Stream); 
      aBmp.LoadfromStream(Stream);

    finally 
       VariantClear(aValue); 
       Stream.free; 
    end; 
    end;

    procedure TForm2.BMPToVariant(aBmp : TBitmap; var aVariant:OleVariant); 
    var 
      Stream        : TMemoryStream; 
    begin 
        try 
           Stream := TMemoryStream.Create;

           Image1.Picture.Bitmap.SaveToStream(Stream);

           StreamToVariant(Stream, aVariant); 
        finally 
           Stream.Free; 
       end; 
    end;

    rocedure TForm2.VariantToStream (const v : olevariant; 
                                      Stream : TMemoryStream); 
    var 
      p : pointer; 
    begin 
      Stream.Position := 0; 
      Stream.Size := VarArrayHighBound (v, 1) - VarArrayLowBound(v,  1) + 1; 
      p := VarArrayLock (v); 
      Stream.Write (p^, Stream.Size); 
      VarArrayUnlock (v); 
      Stream.Position := 0; 
    end;

    procedure TForm2.StreamToVariant (Stream : TMemoryStream; var v : OleVariant); 
    var 
      p : pointer; 
    begin 
      v := VarArrayCreate ([0, Stream.Size - 1], varByte); 
      p := VarArrayLock (v); 
      Stream.Position := 0; 
      Stream.Read (p^, Stream.Size); 
      VarArrayUnlock (v); 
    end; 

  • 相关阅读:
    Codeforces Round #600 (Div. 2) A. Single Push
    Codeforces Round #600 (Div. 2) B. Silly Mistake
    106. 从中序与后序遍历序列构造二叉树
    23. 合并K个升序链表
    203. 移除链表元素
    328. 奇偶链表
    86. 分隔链表
    面试题 02.05. 链表求和
    面试题 02.02. 返回倒数第 k 个节点
    剑指 Offer 18. 删除链表的节点
  • 原文地址:https://www.cnblogs.com/yzryc/p/6374910.html
Copyright © 2011-2022 走看看