Member 11149766 Ответов: 0

Свинцовые инструменты в c#.net


Мое требование заключается в выделении текста на изображении при рисовании прямоугольного текста на изображении .Я пробовал разные способы, но цвет не применяется к тексту.пожалуйста, помогите мне, Спасибо.

Что я уже пробовал:

protected void HighlightImageText(ImageViewerRubberBandEventArgs e)
        {

            int left = 0;
            int right = 0;
            int top = 0;
            int bottom = 0;
            int PAX = -1, PAY = -1, PBX = -1, PBY = -1, PCX = -1, PCY = -1, PDX = -1, PDY = -1;
            LeadRect selectedImageRectangle = new LeadRect(0, 0, 0, 0);
            selectedImageRectangle = this._imageViewer.ConvertRect(null, ImageViewerCoordinateType.Control, ImageViewerCoordinateType.Image,
                                                            LeadRect.FromLTRB(e.Points[0].X, e.Points[0].Y, e.Points[1].X, e.Points[1].Y));

            left = selectedImageRectangle.Left;
            right = selectedImageRectangle.Right;
            top = selectedImageRectangle.Top;
            bottom = selectedImageRectangle.Bottom;
            PAX = selectedImageRectangle.X;
            PAY = selectedImageRectangle.Y;
            PBX = PAX + selectedImageRectangle.Width;
            PBY = PAY;
            PCX = PAX;
            PCY = PAY + selectedImageRectangle.Height;
            PDX = PBX;
            PDY = PCY;


            try
            {
                if (_annManager == null)
                {
                    _annManager = new AnnAutomationManager();
                    _annManager.CreateDefaultObjects();
                }
                _automationControl = new ImageViewerAutomationControl();
              //  if (_annAutomation == null)
                {
                    _annAutomation = new AnnAutomation(_annManager, _automationControl);
                    _annAutomation.Active = true;
                }

                Leadtools.Annotations.AnnContainer container = new Leadtools.Annotations.AnnContainer();

                left = PAX;
                if (left > PBX) left = PBX;
                if (left > PCX) left = PCX;
                if (left > PDX) left = PDX;

                top = PAY;
                if (top > PBY) top = PBY;
                if (top > PCY) top = PCY;
                if (top > PDY) top = PDY;

                right = PDX;
                if (right < PCX) right = PCX;
                if (right < PBX) right = PBX;
                if (right < PAX) right = PAX;

                bottom = PDY;
                if (bottom < PCY) bottom = PCY;
                if (bottom < PBY) bottom = PBY;
                if (bottom < PAY) bottom = PAY;

                if (left != -1 && right != -1 && top != -1 && bottom != -1)
                {
                    float width = 0;
                    float height = 0;

                    width = System.Math.Abs(right - left);
                    height = System.Math.Abs(bottom - top);

   
                    double inch = 720.0;
                    Leadtools.Annotations.Core.AnnHiliteObject hiliteObj = new Leadtools.Annotations.Core.AnnHiliteObject();
                    hiliteObj.Points.Add(LeadPointD.Create(1 * inch, 1 * inch));
                    hiliteObj.Points.Add(LeadPointD.Create(2 * inch, 1 * inch));
                    hiliteObj.Points.Add(LeadPointD.Create(2 * inch, 2 * inch));
                    hiliteObj.Points.Add(LeadPointD.Create(1 * inch, 2 * inch));
                    hiliteObj.Rect = LeadRectD.Create(left, top, width, height);
                   
                    hiliteObj.HiliteColor = "Yellow";
                    hiliteObj.RenderedObjectBounds = LeadRectD.Create(left, top, width, height);
                    hiliteObj.Fill = AnnSolidColorBrush.Create("Yellow");
                    hiliteObj.Stroke = AnnStroke.Create(AnnSolidColorBrush.Create("Yellow"), LeadLengthD.Create(1));
                    hiliteObj.Bounds.ContainsRect(LeadRectD.Create(left, top, width, height));
                   // _annManager.Objects.Clear();
                 //   _annAutomation.Containers.Clear();
                    _annAutomation.Container.Children.Add(hiliteObj);
                    _annAutomation.ActiveContainer.Children.Add(hiliteObj);
                    AnnRectangleObject rectObj = new AnnRectangleObject();
                    rectObj.Rect = LeadRectD.Create(left, top, width, height);
                    rectObj.Stroke = AnnStroke.Create(AnnSolidColorBrush.Create("Blue"), LeadLengthD.Create(1));
                    rectObj.Fill = AnnSolidColorBrush.Create("Yellow");
                    rectObj.RenderedObjectBounds= LeadRectD.Create(left, top, width, height); ;
                    _annAutomation.ActiveContainer.Children.Add(rectObj);

                    this._imageViewer.Invalidate();
                    // TODO: check following cumbersome logic to refresh the image
                    Size imgSize = this._imageViewer.Size;
                    Size newImgSize = imgSize;
                    newImgSize.Height = newImgSize.Height - 1;
                    this._imageViewer.Size = newImgSize;
                    this._imageViewer.Size = imgSize;

                }
            }
            catch (Exception ex)
            {
                //  ErrorHandler.ProcessMessage(this, e);
            }
        }

Graeme_Grant

Вам лучше всего задать свой вопрос в области поддержки стороннего инструмента: Считать технической поддержки[^]

Slacker007

Я работал с продуктами Lead Tools в течение нескольких лет в прошлом, и я знаю, что у них есть очень хороший список демо-проектов с каждой установкой. Я бы проверил правильный демо-проект, который делает то, что вы хотите сделать, и получил бы от этого представление. Кроме того, как указал Graeme_Grant, вам следует зайти на сайт LeadTools и ознакомиться с их базой знаний и часто задаваемыми вопросами. Это очень помогло мне в прошлом.

0 Ответов