找回密码
 立即注册

QQ登录

只需一步,快速开始

450289068

论坛元老

18

主题

148

帖子

4122

积分

论坛元老

积分
4122

活字格认证

450289068
论坛元老   /  发表于:2013-11-12 09:39  /   查看:5161  /  回复:5
我使用tx模版生成器,制作了个模版,应用了textframe,在textframe中套了个image 整个页面包含手动添加进去3个 textframe和分别有3个Image。  然后我使用代码去获取。请问如何获取每个textframe和每个image 除了foreach外 ,还能有其他办法获取吗 ??

我使用 textControl1.TextFrames[0] 出错,而用textControl1.TextFrames.GetItem(0);返回是null 但是textControl1.TextFrames.count 可以获取为3  

求在没有动态设定id和name的情况下 如何获取每个特定的控件。

5 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-11-12 11:06:00
沙发
450289068

TX 中的绝大多数集合对象都无法通过数组下标进行访问,而需要通过id或者name进行访问,如果该对象没有id也没有name,只能通过 foreach 进行访问。
回复 使用道具 举报
450289068
论坛元老   /  发表于:2013-11-12 11:20:00
板凳
有没有填充的概念,比如我在模版设定了一个textframe,然后在其中放入了一个Image,想让image填充满textframe,自动对图片进行计算了缩放。。如果无这个功能,那怎么做可以达到这样的效果。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-11-12 15:32:00
地板
450289068

请参考这篇博客中接受的方法,以实现图片的大小自适应功能:http://blog.gcpowertools.com.cn/post/2013/11/12/TX_Text_Control_Image_AutoSize.aspx

  1.     private void InsertImage()
  2.     {
  3.         // 完成TX中使用的度量单位缇(Twip)与.NET使用的度量单位像素(Pixel)的转换
  4.         Graphics g = textControl1.CreateGraphics();
  5.         int iTwipsPerPixel = (int)(1440 / g.DpiX);

  6.         OpenFileDialog dlgOpen = new OpenFileDialog();

  7.         if (dlgOpen.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  8.         {
  9.             // 加载图片
  10.             Image tmp = Image.FromFile(dlgOpen.FileName);

  11.             // 获取图片父容器TextFrame
  12.             TXTextControl.TextFrame frame = textControl1.TextParts.GetMainText().TextFrames.GetItem(1000);

  13.             // 创建TX中的图片对象
  14.             TXTextControl.Image image = new TXTextControl.Image(tmp);

  15.             // 设置图片ID
  16.             image.ID = 1001;

  17.             //设置横向和纵向缩放比例属性,注意TextFrame中可用的空间范围应该减去Margin区域
  18.             image.HorizontalScaling = ((frame.Size.Width - frame.InternalMargins[0] - frame.InternalMargins[2]) * 100) / (tmp.Width * iTwipsPerPixel);
  19.             image.VerticalScaling = ((frame.Size.Height - frame.InternalMargins[1] - frame.InternalMargins[3]) * 100) / (tmp.Height * iTwipsPerPixel);

  20.             // 将图片插入到TextFrame中
  21.             textControl1.Images.Add(image, textControl1.InputPosition.TextPosition);
  22.         }
  23.     }
复制代码
回复 使用道具 举报
450289068
论坛元老   /  发表于:2013-11-12 16:27:00
5#
多谢 版主提供思路  解决了
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-11-12 16:48:00
6#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部