找回密码
 立即注册

QQ登录

只需一步,快速开始

mindrayguowei

中级会员

122

主题

274

帖子

986

积分

中级会员

积分
986

活字格认证

QQ
mindrayguowei
中级会员   /  发表于:2015-9-2 14:10  /   查看:4978  /  回复:6
看到论坛里面有一个问题问的是如何在插入图片时让图片自适应窗体的大小,尝试了以下,发现只有当手工在界面上添加图片的时候才会触发ImageCreate事件,程序里通过TextContro.Images.Add()方法来添加图片的时候,ImageCreate事件不会触发,这到底是怎么回事啊?

6 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2015-9-2 18:13:00
沙发
回复 1楼mindrayguowei的帖子

请问您的具体需求是什么?参考的哪个帖子,我了解下需求背景。

ImageCreate 在粘贴或者加载包含图片的文件时才会触发。
回复 使用道具 举报
mindrayguowei
中级会员   /  发表于:2015-9-6 09:06:00
板凳
具体的需求:
由于通过程序添加图片时无法自动排版,所以考虑用一个table来固定每个图片的位置。
这样带来两个问题:
1. table的cell需要动态扩展,这个已解决
2. cell的宽度和高度需要根据图片的尺寸动态调整。 由于拿不到图片的尺寸,所以这一步无法实现。


参考的帖子:
http://gcdn.gcpowertools.com.cn/showtopic-15651.html
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-9-6 19:57:00
地板
回复 3楼mindrayguowei的帖子

需求已经了解了,明天调查后第一时间给您回复。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-9-7 10:09:00
5#
回复 3楼mindrayguowei的帖子

可以通过 Image 类来获取图片的实际尺寸,然后再通过 DpiX 转换为 TX 尺寸设置给 Cell 即可。请使用以下代码测试:

  1.         private void addimageToolStripMenuItem_Click(object sender, EventArgs e)
  2.         {
  3.             Image img = Image.FromFile("..\\..\\test.png");

  4.             TXTextControl.Image image = new TXTextControl.Image(img);

  5.             this.textControl1.Images.Add(image,0);

  6.             TXTextControl.TableCell cell = this.textControl1.Tables.GetItem(11).Cells.GetItem(1, 1);

  7.             int iTwipsPerPixel = (int)(1440 / textControl1.CreateGraphics().DpiX);

  8.             cell.Width = img.Width*iTwipsPerPixel;
  9.         }

  10.         private void Form1_Load(object sender, EventArgs e)
  11.         {
  12.             this.textControl1.Text = "";
  13.             this.textControl1.Tables.Add(2,2,11);
  14.         }
复制代码
回复 使用道具 举报
mindrayguowei
中级会员   /  发表于:2015-9-7 11:09:00
6#
这个方法可以用,谢谢。请关闭问题吧
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-9-7 15:22:00
7#
回复 6楼mindrayguowei的帖子

好的,感谢反馈问题结果。

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢

评分

参与人数 1满意度 +5 收起 理由
mindrayguowei + 5 问题解决了,谢谢

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部