Posts: 36
Threads: 12
Joined: Dec 2018
Im scanning for two different images and i want to subtract their positions but it seems the .Rect outputs cant be substracted from another.
Is there a way to convert rect values? I only need the first x and y values, the upper left position of the images. Maybe .Rect is the wrong way.
Posts: 12,073
Threads: 140
Joined: Dec 2002
var w = wnd.find(1, "Document - WordPad", "WordPadClass");
IFImage[] image = {
@"image:iVBORw0KGgoAAAANSUhEUgAAABcAAAASCAYAAACw50UTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE5SURBVDhP7ZPNSoRQGIbrDroCN11By66lfd1Bi+6ghT8ImiKCKAriz7IZpph2E4zTsl2brqA2KYr5xffBDJ5zRprJ2nXgQQ76Phze73jwUVbwV/zLtyLIi2IFeZ5vSNMU4jiGMAzB931wXRds2wbTNGE2u2OyPIIchbsuVVWZLM+g/FaSfkTfNerksiwzWR5BvlwWgx3ruk5VoBSZTKZMlkeQj+Hk5pPZ/6r8+PqN2Qvy/lXMsgySJKGaoiiCIAjA8zyqynEcmM8fKHN0+QL3z+/07LtGDdQwDMocXjwRV/kr4xqUS6dng1RVRd/ggElyvtrQdwlyrKK/uq6Dtm2haRqo65rEZVnSO03TmCyPIMeOcW078Zq1XFEUJssjyHF4u669f6LF4lG4FZZl0fCwY6wCT/z9T1TBF/suxcMGYCvTAAAAAElFTkSuQmCC",
@"image:iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEwSURBVDhPY/j67ft/amLaGjht6e7/Ulmr4RhZDh3jUoti4PRle/6DwLdf/wkaiEstioEzlu/9L2cZDcaEDASpBYFPPwgY+Pfv//9vvxJ2IS7LUQycuWLf/19//hPlQpjal5/xuHDWyv3gMHnyHtOFk479ROHjUoti4OxVB3CGoXzr6/+dez+gqAWF3/23BAwEhd+tVwhFHpPv/pevuvafPfcyGNdufIKiFm8Yzll98P+LT9jDkCHtzP+qdQ8x1F59gceFc9cc+v/kw///559ihiGyYSCMSy2KgfPWHsYZhugYpPYeMPxOPyRg4E1g+B2/j+lCdIzLchQD56878v8KMEyIcSFM7aG7eFy4YP3R/+ef/P+//zZhF+JSi2EgCIO8A8LIcugYl1oUAynH3/8DABFn8ej01U9GAAAAAElFTkSuQmCC",
};
var a = new List<uiimage>();
uiimage.find(1, w, image, IFFlags.WindowDC, also: o => { a.Add(o); return IFAlso.OkFindMoreOfList; });
if (a.Count == 2) {
int dx = a[1].Rect.left - a[0].Rect.left, dy = a[1].Rect.top - a[0].Rect.top;
print.it(dx, dy);
}
Posts: 36
Threads: 12
Joined: Dec 2018
Now i understand. I will try that soon. Thank you very much!
Posts: 36
Threads: 12
Joined: Dec 2018
I tried it, but it couldnt find the image. The next thing i tried was to add diff: but no matter what value i give it, no images are found.
Can you please help me Gintaras?
Maybe it finds images but more than two? This could be possible.
Can i choose to pick the closest one and ignore other images?
[code]var w = wnd.find(1, "Document - WordPad", "WordPadClass");
IFImage[] image = {
@"C:\Users\User\Documents\IMG\pos1.bmp",
@"C:\Users\User\Documents\IMG\pos2.bmp",
};
var a = new List<uiimage>();
uiimage.find(w, image, IFFlags.WindowDC, diff: 70, also: o => { a.Add(o); return IFAlso.OkFindMoreOfList; });
if (a.Count == 2) {
int dx = a[1].Rect.left - a[0].Rect.left, dy = a[1].Rect.top - a[0].Rect.top;
print.it("1 Pos difference: ", dx, dy);
wait.s(1);
} else {
print.it("Pos not found");
wait.s(1);
}
[/code]
Posts: 12,073
Threads: 140
Joined: Dec 2002
02-12-2023, 11:21 AM
(This post was last modified: 02-12-2023, 11:28 AM by Gintaras.)
This code can find 0, 1 or 2 images, not more. Insert print.it(a.Count).
The original question was about subtracting two .Rect from image.find results, but you did not provide code that shows how you get that 2 results. Maybe my code is not what you need.