找回密码
 立即注册

QQ登录

只需一步,快速开始

wjy72
初级会员   /  发表于:2015-11-18 12:20:00
21#
public void addTextToImage(string addText,LeadRectD lr, double fontSize)
        {
            AnnTextObject text = new AnnTextObject();
            text.Stroke = null;//没有边框
            text.Text = addText;
            text.Font = new AnnFont("Arial", fontSize);
            text.Fill = null;
            text.Rect = lr;//.ToLeadRectD();
            text.TextForeground = AnnSolidColorBrush.Create("Black");
            Automation.Container.Children.Add(text);
            Automation.Invalidate(LeadRectD.Empty);
            Automation.SelectObject(text);
        }

这里面,怎么将你的代码COPY进去?
回复 使用道具 举报
wjy72
初级会员   /  发表于:2015-11-18 12:56:00
22#
另外,在调用注释时,如何修改 注释文本的 字符加粗 呢?AnnFontStyle里面,居然没有BOLD,这个如何加粗?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-11-19 09:14:00
23#
回复 22楼wjy72的帖子

正在处理中,稍后回复
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-11-19 11:03:00
24#
回复 21楼wjy72的帖子

抱歉,由于不了解您的上下文环境所以给出的技术方案不符合。

通过21#代码添加注释需要通过以下代码进行修改文本:

  1. AnnTextObject AnnTxt;
  2.         public void addTextToImage(string addText, LeadRect lr, double fontSize)
  3.         {
  4.             LeadRectD dest = new LeadRectD(this.imageViewer1.Image.Width - 120, this.imageViewer1.Image.Height - 80, 1000, 500);
  5.             AnnTxt = new AnnTextObject();
  6.             AnnTxt.Stroke = null;//没有边框
  7.             AnnTxt.Text = addText;
  8.             AnnTxt.Font = new AnnFont("Arial", fontSize);
  9.             AnnTxt.Fill = null;
  10.             AnnTxt.Rect = dest;
  11.             AnnTxt.TextForeground = AnnSolidColorBrush.Create("Black");
  12.             AnnTxt.IsSelected = true;
  13.             Automation.Container.Children.Add(AnnTxt);
  14.             Automation.Invalidate(LeadRectD.Empty);
  15.             Automation.SelectObject(AnnTxt);

  16.             Leadtools.Annotations.AnnPoint AnnPt = new Leadtools.Annotations.AnnPoint((float)(this.imageViewer1.Image.Width - 120), (float)(this.imageViewer1.Image.Height - 80), Leadtools.Annotations.AnnUnit.Pixel);
  17.             TextBox txt = new TextBox();
  18.             txt.Location = new Point(1000,500);
  19.             txt.Leave += txt_Leave;
  20.             txt.Multiline = true;
  21.             txt.Parent = this.imageViewer1;
  22.             txt.Text = AnnTxt.Text;
  23.             txt.SetBounds((int)(AnnTxt.Bounds.X), (int)(AnnTxt.Bounds.Y), (int)(AnnTxt.Bounds.Width), (int)(AnnTxt.Bounds.Height));
  24.             txt.Show();
  25.             txt.Focus();
  26.         }

  27.         void txt_Leave(object sender, EventArgs e)
  28.         {
  29.              TextBox txt= sender as TextBox;
  30.              AnnTxt.Text = txt.Text;
  31.              txt.Dispose();
  32.         }
复制代码


在 Viewer 中添加一个textbox,进行编辑。
回复 使用道具 举报
wjy72
初级会员   /  发表于:2015-11-19 13:31:00
25#
很好,但是TEXT定位不准,因为TEXT定位不在imageViewer1里。怎么办?
txt.Location = new Point(1000,500);
txt.SetBounds((int)(AnnTxt.Bounds.X), (int)(AnnTxt.Bounds.Y), (int)(AnnTxt.Bounds.Width), (int)(AnnTxt.Bounds.Height));
这两句得改正的吧,先要将TEXT定位在imageViewer1里才行啊。

  Leadtools.Annotations.AnnPoint AnnPt = new Leadtools.Annotations.AnnPoint((float)(this.imageViewer1.Image.Width - 120), (float)(this.imageViewer1.Image.Height - 80), Leadtools.Annotations.AnnUnit.Pixel);
这句做啥用的?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-11-19 17:52:00
26#
回复 25楼wjy72的帖子

这个问题我需要发送给厂商进行调查,有进一步反馈通知您。
回复 使用道具 举报
wjy72
初级会员   /  发表于:2015-11-20 08:46:00
27#
好,请问我13楼的问题如何解决?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-11-20 17:41:00
28#
回复 27楼wjy72的帖子

厂商给的回复是 16#的代码,请问有脱离当前实际项目测试过吗?是不是受到了当前代码的影响
回复 使用道具 举报
wjy72
初级会员   /  发表于:2015-11-23 10:30:00
29#
iiWidth = imageViewer1.Image.ImageWidth;
iiHeight = imageViewer1.Image.ImageHeight;

   case "4"://左边正中
                                imageLeft =0;
                                imageTop = (iiHeight / 2) + 10;

  newLr = new LeadRect(imageLeft, imageTop,700,400);
newLrD = new LeadRectD((double)newLr.X, (double)newLr.Y, (double)newLr.Width, (double)newLr.Height);


实际情况是偏上了,当然比以前好点,不是左上角了,但也不是左边正中,在左边偏上大约四分之一处
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-11-23 18:29:00
30#
回复 29楼wjy72的帖子

我在尝试重现你这个问题:

  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             RasterCodecs rcs = new RasterCodecs();
  4.             imageViewer1.Image = rcs.Load("..\\..\\error.jpg");

  5.             ImageViewerAddRegionInteractiveMode RegionInteractiveMode = new ImageViewerAddRegionInteractiveMode();
  6.             RegionInteractiveMode.Shape = ImageViewerRubberBandShape.Rectangle;
  7.             RegionInteractiveMode.AutoRegionToFloater = true;
  8.             RegionInteractiveMode.WorkOnBounds = true;
  9.             RegionInteractiveMode.IsEnabled = true;
  10.             imageViewer1.InteractiveModes.Add(RegionInteractiveMode);
  11.         }

  12.         private void convertToolStripMenuItem_Click(object sender, EventArgs e)
  13.         {
  14.             int iiWidth = imageViewer1.Image.ImageWidth;
  15.             int iiHeight = imageViewer1.Image.ImageHeight;
  16.             int imageLeft =0;
  17.             int imageTop = (iiHeight / 2) + 10;

  18.             LeadRect newLr = new LeadRect(imageLeft, imageTop, 700, 400);
  19.             LeadRectD newLrD = new LeadRectD((double)newLr.X, (double)newLr.Y, (double)newLr.Width, (double)newLr.Height);

  20.             imageViewer1.Image.AddRectangleToRegion(null, newLr, RasterRegionCombineMode.And);
  21.         }
复制代码


当前您是如何添加 LeadRectD 到ImageViewer中的?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部