从AutomationElement获取图像类的内容

时间:2014-10-08 17:40:13

标签: automation ui-automation automationelement

我在包含图片的第三方应用中走控制。自动化元素返回类名称Image,关于如何将该Image的内容作为位图对象,甚至字节获取的任何想法?

2 个答案:

答案 0 :(得分:0)

此讨论非常有用:Capturing an image behind a rectangle

只需使用AutomationElement的BoundingRectangle属性即可创建快照。

答案 1 :(得分:0)

虽然这个问题已经过时了,但我想在我遇到这个问题时添加一个答案。

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();