Пробую взять цвет пикселя...

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
Всем привет
Не могу понять почему выскакивает ошибка: Ошибка в работе шаблона: Параметр должен быть положительным и меньше ширины. Имя параметра: x"
код такой сделал:
C#:
bool ColorYes = false;
                        
                        HtmlElement NewBtn = instance.ActiveTab.FindElementByXPath("//div[contains(@class, 'radio_option')]//input//following-sibling::label[contains(text(), 'Новый')]",0);
                        
                        int left = Convert.ToInt32(NewBtn.GetAttribute("leftinbrowser"));
                        int top = Convert.ToInt32(NewBtn.GetAttribute("topinbrowser"));
                        project.SendInfoToLog("left " + left,true);
                        project.SendInfoToLog("top " + top,true);
                        
                        Bitmap bitmap = NewBtn.DrawAsBitmap(false, "");
                        Color dotColor = bitmap.GetPixel(top, left);
                        ColorYes = dotColor.Name=="e0e0e0";
                        
                        if(dotColor.Name=="e0e0e0"){
                            project.SendInfoToLog("Кнопка 'Новый' уже нажата, пропускаем клик по ней",true);
                        }else{
                            instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(NewBtn);
                            project.SendInfoToLog("Кликаем на кнопку 'Новый товар' ",true);
                            instance.ActiveTab.FullEmulationMouseClick("left","click");
                            instance.ActiveTab.WaitDownloading();
                            System.Threading.Thread.Sleep(rnd.Next(6500, 12500));                           
                        }
вроде left и top положительные, почему тогда вылетает ошибка?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 697
Баллы
113
пробовал битмап сохранять после этой операции ? ну что бы глянуть что он создал.

77002


а еще размеры от 0 идут. то есть картинка с 100х100 имеет адресацию от 0 и до 99
 

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
пробовал битмап сохранять после этой операции ? ну что бы глянуть что он создал.

Посмотреть вложение 77002

а еще размеры от 0 идут. то есть картинка с 100х100 имеет адресацию от 0 и до 99
можно поточнее сказать в чем ошибка? с bitmap недавно начал работать
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 697
Баллы
113
можно поточнее сказать в чем ошибка? с bitmap недавно начал работать
точнее нельзя.
попробуй взять цвет у пикселя 0,0 , сохрани битмап и посмотри глазами , что у тебя сохранилось. может у тебя картинка не формируется тупо.
 
  • Спасибо
Реакции: Nelirr

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
точнее нельзя.
попробуй взять цвет у пикселя 0,0 , сохрани битмап и посмотри глазами , что у тебя сохранилось. может у тебя картинка не формируется тупо.
попробовал сохранить картинку, пишет - Выполнение действия CSharp OwnCode. В GDI+ возникла ошибка общего вида.
 

volody00

Client
Регистрация
06.09.2016
Сообщения
804
Благодарностей
828
Баллы
93
вот в этой строке
C#:
Color dotColor = bitmap.GetPixel(top, left);
поставь 3,3 (к примеру)
C#:
Color dotColor = bitmap.GetPixel(3, 3);
 
  • Спасибо
Реакции: Nelirr

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 697
Баллы
113
попробовал сохранить картинку, пишет - Выполнение действия CSharp OwnCode. В GDI+ возникла ошибка общего вида.
что то ты не то делаешь. или ошибка в другом месте.
вот такой код нормально сохраняет и берет цвет пикселя.
C#:
bool ColorYes = false;

HtmlElement NewBtn = instance.ActiveTab.FindElementByXPath(@"/html/body/table[1]/tbody[1]/tr[1]/td[1]/table/tbody/tr/td[2]/img", 0);

int left = Convert.ToInt32(NewBtn.GetAttribute("leftinbrowser"));
int top = Convert.ToInt32(NewBtn.GetAttribute("topinbrowser"));
project.SendInfoToLog("left " + left, true);
project.SendInfoToLog("top " + top, true);

Bitmap bitmap = NewBtn.DrawAsBitmap(false, "");

bitmap.Save(@"c:\SavedBMPs\1.jpg");
Color dotColor = bitmap.GetPixel(bitmap.Width -1, bitmap.Height -1);
77003
 
  • Спасибо
Реакции: Nelirr

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
что то ты не то делаешь. или ошибка в другом месте.
вот такой код нормально сохраняет и берет цвет пикселя.
C#:
bool ColorYes = false;

HtmlElement NewBtn = instance.ActiveTab.FindElementByXPath(@"/html/body/table[1]/tbody[1]/tr[1]/td[1]/table/tbody/tr/td[2]/img", 0);

int left = Convert.ToInt32(NewBtn.GetAttribute("leftinbrowser"));
int top = Convert.ToInt32(NewBtn.GetAttribute("topinbrowser"));
project.SendInfoToLog("left " + left, true);
project.SendInfoToLog("top " + top, true);

Bitmap bitmap = NewBtn.DrawAsBitmap(false, "");

bitmap.Save(@"c:\SavedBMPs\1.jpg");
Color dotColor = bitmap.GetPixel(bitmap.Width -1, bitmap.Height -1);
Возможно.. Спасибо, буду пробовать
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 257
Благодарностей
815
Баллы
113
попробовал сохранить картинку, пишет - Выполнение действия CSharp OwnCode. В GDI+ возникла ошибка общего вида.
Эта ошибка возможна из за банального отсутствия папки в которую пытаешься сохранить:-)
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 949
Благодарностей
4 371
Баллы
113
Эта ошибка возможна из за банального отсутствия папки в которую пытаешься сохранить:-)
У меня смешная аналогия. В графических редакторах цвет пикселя берут пипеткой)
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 697
Баллы
113

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 949
Благодарностей
4 371
Баллы
113

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 949
Благодарностей
4 371
Баллы
113

volody00

Client
Регистрация
06.09.2016
Сообщения
804
Благодарностей
828
Баллы
93
я же указал, где ошибка. Ты получаешь координаты картинки относительно браузера, потом сохраняешь её в формате bitmap, а потом пытаешься получить пиксель по координатам, на которых находилась картинка. Естественно пикселя нет по этим координатам, укажи точку в пределах размера картинки
 

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
я же указал, где ошибка. Ты получаешь координаты картинки относительно браузера, потом сохраняешь её в формате bitmap, а потом пытаешься получить пиксель по координатам, на которых находилась картинка. Естественно пикселя нет по этим координатам, укажи точку в пределах размера картинки
теперь понятно, спасибо
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)