Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Мигает рамка, созданная с помощью visualwindow

Страниц (1): [1]
 

1. Kostick - 29 Октября, 2022 - 09:42:56 - перейти к сообщению
Добрый день, подскажите, можно ли как-то избавиться от мигания рамки, созданной с помощью visualwindow?
Мигание появляется, если в коде привязать visualwindow к окну вот так (применительно к игре Black Desert Online):
CODE:
win W_Kib;
W_Kib=window ("Black Desert - 428001", "BlackDesertWindowClass", -1);

int array[1920][1080];
initialarray(#array[0][0], rgb(0, 255, 0));

visual(200, 100, 700, 500, 3); // координаты рамки и толщина линии
loop()sleep(10);


function visual(int sx, int sy, int ex, int ey, int width)
{
visualwindow(W_Kib, 0, 0, 0, ex-sx, width, sx, sy, 100, #array[0][0]);
visualwindow(W_Kib, 1, 0, 0, width, ey-sy, sx, sy, 100, #array[0][0]);
visualwindow(W_Kib, 2, 0, 0, ex-sx+width, width, sx, ey, 100, #array[0][0]);
visualwindow(W_Kib, 3, 0, 0, width, ey-sy, ex, sy, 100, #array[0][0]);
}

Также цвет становится черным, хотя должен быть зеленым.

При этом когда пытаешься вывести рамку без привязки, она не мигает:
CODE:
int array[1920][1080];
initialarray(#array[0][0], rgb(0, 255, 0));

visual(200, 100, 700, 500, 3); // координаты рамки и толщина линии
loop()sleep(10);


function visual(int sx, int sy, int ex, int ey, int width)
{
visualwindow(0, 0, 0, ex-sx, width, sx, sy, 100, #array[0][0]);
visualwindow(1, 0, 0, width, ey-sy, sx, sy, 100, #array[0][0]);
visualwindow(2, 0, 0, ex-sx+width, width, sx, ey, 100, #array[0][0]);
visualwindow(3, 0, 0, width, ey-sy, ex, sy, 100, #array[0][0]);
}

Демонстрация мигания на видео:(для просмотра ссылки Вам необходимо авторизоваться)
2. Zireael - 29 Октября, 2022 - 10:07:49 - перейти к сообщению
 Цитата:
можно ли как-то избавиться от мигания рамки

Не использовать привязку к окну. Если нужно выводить относительно окна, то к координатам visualwindow прибавить координаты окна.
3. Kostick - 29 Октября, 2022 - 10:18:29 - перейти к сообщению
В общем убрал мигания через привязку к координатам окна, а не к самому окну с помощью W_Kib.leftclient и W_Kib.topclient:
CODE:
win W_Kib;
W_Kib=window ("Black Desert - 428001", "BlackDesertWindowClass", -1);

int X_nach;
int Y_nach;
int X_ogr;
int Y_ogr;

X_nach=W_Kib.leftclient+500; // Начальные координаты области по X
Y_nach=W_Kib.topclient+100; // Начальные координаты области по Y
X_ogr=W_Kib.leftclient+1000; // Конечные координаты области по X
Y_ogr=W_Kib.topclient+500; // Конечные координаты области по Y

int array[1920][1080];
initialarray(#array[0][0], rgb(0, 255, 0));

visual(X_nach, Y_nach, X_ogr, Y_ogr, 3); // координаты рамки и толщина линии
loop()sleep(10);


function visual(int sx, int sy, int ex, int ey, int width)
{
visualwindow(0, 0, 0, ex-sx, width, sx, sy, 100, #array[0][0]);
visualwindow(1, 0, 0, width, ey-sy, sx, sy, 100, #array[0][0]);
visualwindow(2, 0, 0, ex-sx+width, width, sx, ey, 100, #array[0][0]);
visualwindow(3, 0, 0, width, ey-sy, ex, sy, 100, #array[0][0]);
}

(Добавление)
 Zireael пишет:
 Цитата:
можно ли как-то избавиться от мигания рамки

Не использовать привязку к окну. Если нужно выводить относительно окна, то к координатам visualwindow прибавить координаты окна.

После вашего сообщения про textout как раз так и сделал, еще раз благодарю за подсказку.

Powered by ExBB FM 1.0 Final