Получить содержимое класса изображений из AutomationElement

Я иду элементы управления в стороннем приложении, которое содержит изображения. Элемент автоматизации возвращает имя класса Image. Есть идеи, как получить содержимое этого изображения в виде растрового объекта или даже байтов?

2 ответа

Хотя этот вопрос старый, я хотел добавить ответ, когда столкнулся и с этой проблемой.

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Automation;

namespace AutomationElementExtension
{
    public static class AutomationElementExtension
    {
        public static Bitmap ToBitmap(this AutomationElement automationElement)
        {
            var boundingRectangle = automationElement.Current.BoundingRectangle;
            var bitmap = new Bitmap(Convert.ToInt32(boundingRectangle.Width), Convert.ToInt32(boundingRectangle.Height), PixelFormat.Format32bppArgb);
            using (Graphics graphics = Graphics.FromImage(bitmap))
            {
                graphics.CopyFromScreen(Convert.ToInt32(boundingRectangle.X), Convert.ToInt32(boundingRectangle.Y), Point.Empty.X, Point.Empty.Y, bitmap.Size);
            }
            return bitmap;
        }
    }
}

Затем вы можете получить изображение как растровое изображение, называя его как

var bitmap = myAutomationElement.ToBitmap();

Это обсуждение может быть полезным: Захват изображения за прямоугольником.

Просто используйте свойство BoundingRectangle объекта AutomationElement, чтобы сделать снимок.

Другие вопросы по тегам