Kostick |
Отправлено: 29 Октября, 2022 - 17:42:56
|
Мастер
Покинул форум
Сообщений всего: 184
Дата рег-ции: Авг. 2020
Репутация: 1
|
Добрый день, подскажите, можно ли как-то избавиться от мигания рамки, созданной с помощью 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]);
}
Демонстрация мигания на видео:
https://youtu.be/HJZASm6F9jk(Отредактировано автором: 29 Октября, 2022 - 17:45:44) |
|
|
Kostick |
Отправлено: 29 Октября, 2022 - 18:18:29
|
Мастер
Покинул форум
Сообщений всего: 184
Дата рег-ции: Авг. 2020
Репутация: 1
|
В общем убрал мигания через привязку к координатам окна, а не к самому окну с помощью 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 как раз так и сделал, еще раз благодарю за подсказку. |
|
|
|