找回密码
 立即注册

QQ登录

只需一步,快速开始

Richard.Ma 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-17 10:38  /   查看:2849  /  回复:0
默认情况下,LEADTOOLS主窗体编辑器使用DiskMasterForm类保存到磁盘,这是IMasterForm界面的实现。

https://www.leadtools.com/help/l ... diskmasterform.html
https://www.leadtools.com/help/l ... fa/imasterform.html

这些接口的实现示例与SDK一起安装。这是安装文件夹中这些的默认位置。
C:\ LEADTOOLS 19 \ Examples \ DotNet \ CS \ AutoMasterFormsRepository

对ReadAttributes(),WriteAttributes(),ReadFields(),WriteFields(),ReadForm()和WriteForm())的特定调用决定了哪些文件从磁盘写入和读取,以及它们如何完成。默认情况下,表示主表单模板的三个文件是二进制文件,Xml序列化文件和Tiff映像。此代码段显示了Xml序列化文件如何进行base64编码,以使文本不可读取,以及如何混淆图像,因此它还没有任何可辨别的信息,以及如何撤消这些步骤,当这些文件被重新加载。

这里使用了ScrambleCommand。
https://www.leadtools.com/help/l ... cramblecommand.html
  1.       private const int KEY_SCRAMBLE = 42;
  2.       // Read the fields of this master form
  3.       public FormPages ReadFields()
  4.       {
  5.          if (!File.Exists(_path + ".txt"))
  6.          {
  7.             return null;
  8.          }

  9.          string text = File.ReadAllText(_path + ".txt");
  10.          byte[] array = Convert.FromBase64String(text);
  11.          MemoryStream ms = new MemoryStream(array);
  12.          _processingEngine.LoadFields(ms);


  13.          //to create new forms pages
  14.          FormProcessingEngine tempProcessingEngine = new FormProcessingEngine();
  15.          FormPages formFields = tempProcessingEngine.Pages;
  16.          formFields.AddRange(_processingEngine.Pages);
  17.          return formFields;
  18.       }
  19.       
  20.       // Update the fields of this master form
  21.       public void WriteFields(FormPages fields)
  22.       {
  23.          MemoryStream ms = new MemoryStream();

  24.          if(fields == null)
  25.             throw new ArgumentNullException("fields");
  26.          _processingEngine.Pages.Clear();
  27.          _processingEngine.Pages.AddRange(fields);
  28.          _processingEngine.SaveFields(ms);

  29.          string text = Convert.ToBase64String(ms.ToArray());

  30.          File.WriteAllText(_path + ".txt", text);
  31.       }

  32.       // Read the form (RasterImage) attached to this master form (optional, might return null)
  33.       public RasterImage ReadForm()
  34.       {
  35.          if(!File.Exists(_path + ".tif"))
  36.             return null;

  37.          RasterImage image = _repository.RasterCodecsInstance.Load(_path + ".tif", 1, CodecsLoadByteOrder.Bgr, 1, -1);

  38.          ImageProcessing.ScrambleCommand sc = new ImageProcessing.ScrambleCommand();
  39.          sc.Rectangle = new LeadRect(0, 0, image.Width, image.Height);

  40.          sc.Key = KEY_SCRAMBLE;
  41.          sc.Flags = ImageProcessing.ScrambleCommandFlags.Decrypt;

  42.          sc.Run(image);

  43.          return image;
  44.       }

  45.       // Update the form (RasterImage) attached to this master form
  46.       public void WriteForm(RasterImage form)
  47.       {
  48.          if(form == null)
  49.             throw new ArgumentNullException("form");
  50.          form.DitheringMethod = RasterDitheringMethod.None;

  51.          ImageProcessing.ScrambleCommand sc = new ImageProcessing.ScrambleCommand();
  52.          sc.Rectangle = new LeadRect(0, 0, form.Width, form.Height);

  53.          sc.Key = KEY_SCRAMBLE;
  54.          sc.Flags = ImageProcessing.ScrambleCommandFlags.Encrypt;

  55.          sc.Run(form);

  56.          _repository.RasterCodecsInstance.Save(form, _path + ".tif", RasterImageFormat.Tif, 1, 1, -1, 1, CodecsSavePageMode.Overwrite);
  57.       }
复制代码



附件是主窗体编辑器中显示的形式和保存在磁盘上的混淆版本。


本帖子中包含更多资源

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

x

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部