凯得吧[CAD8.Net]

 找回密码
 注册会员

QQ登录

只需一步,快速开始

尊敬的会员:如您的密码仅为数字等简单密码,为帐号安全,请务必修改! 新会员请验证邮箱!升级后可发主题贴!
分享内容请勿对会员进行二次引导,附件有密码请务必在贴内说明,或使用本站默认密码:www.cad8.net
本站所有资料为会员上传仅供大家学习之用,商用请务必购买正版版权!有侵权之处,请联系管理员(QQ:119891935)删除!
查看: 43|回复: 0
收起左侧

CAD把控件图形变成二进制流输出

[复制链接]
发表于 2019-8-7 16:19:07 | 显示全部楼层 |阅读模式 简体中文繁體中文
用QQ等截图工具截图后,点中发贴区直接按Ctrl+V键就可以将截图粘贴到发贴框.

欢迎加入,注册成为会员,享用更多功能,完全免费。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
_DMxDrawX::WriteBinStream 方法
把控件图形变成二进制流输出。
参数 说明
VARIANT* pVarBinArray 输出二进制数组.是个byte数组
BSTR sPassword 数据密码,没有密码,传空字符串
LONG iVersion 输出的文件版本,如果保存CAD 2002图纸,可以传 23
例如:Delphi代码:
  1.             function OleToMStream(OV:OleVariant): TMemoryStream;
  2.             var
  3.               Data: PByteArray;
  4.               Size: integer;
  5.             beginResult:=TMemoryStream.Create;
  6.                      try
  7.                        Size:=VarArrayHighBound(OV,1)-VarArrayLowBound(OV,1)+1;
  8.                        Data:=VarArrayLock(OV);
  9.                          try
  10.                            Result.Position:=0;
  11.                            Result.WriteBuffer(Data^,Size);
  12.                          finally
  13.                            VarArrayUnlock(OV);
  14.                          end;
  15.                      except
  16.                        Result.Free;Result:=nil;
  17.                      end;
  18.                    end;

  19.                    function MStreamToOle(Strm:TMemoryStream): OleVariant;
  20.                    var
  21.                      Data: PByteArray;
  22.                    beginResult:= VarArrayCreate([0,   Strm.Size   -   1],   varByte);
  23.                      Data:=   VarArrayLock(Result);
  24.                      try
  25.                          Strm.Position   :=   0;
  26.                          Strm.ReadBuffer(Data^,   Strm.Size);
  27.                      finally
  28.                          VarArrayUnlock(Result);
  29.                      end;
  30.                    end;

  31.                    procedure TForm2.Button6Click(Sender: TObject);
  32.                    var
  33.                      aryData:OleVariant;
  34.                      memStream : TMemoryStream ;
  35.                      aryReadData:     OleVariant;
  36.                    begin

  37.                       // 写到内存流
  38.                       MxDrawX1.WriteBinStream(aryData,'',23);
  39.                       memStream := OleToMStream(aryData);

  40.                       // 从内存流加载
  41.                       aryReadData := MStreamToOle( memStream);
  42.                       MxDrawX1.ReadBinStream(aryData,'',16777215);

  43.                    end;
复制代码



您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

本站所有资料仅供大家学习之用,商用请务必购买正版版权!有侵权之处,请联系管理员(QQ:119891935)删除!
快速回复 返回顶部 返回列表