Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Без описания
007wan
Отправлено: 14 Августа, 2019 - 20:45:34
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




Помогите сделать,прелоадер по середине диалога без рамки диалога с фоном диалога , но прелоадер имеет линейный тип и от 0 до 100 значение. Имеет фон пустой и тусклый в местах, где нету линии прелоадера,а сама линия яркая и градиентовая., текст от прелоадера внизу влевом углу загрузки,а проценты вверху права, пожалуйста. Представления имею с чего начать,а рисовать не умею.
Преловдер это по суть линия и прибавляются к ней пиксели или растяжка изображения вправа. Если можно, то через external.
(Добавление)
Извиняюсь. С телефона пишу заошибки
 
 Top
Zireael
Отправлено: 15 Августа, 2019 - 02:03:19
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017  
Репутация: 585




CODE:
#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll");


int image[200][20], image2[200][20];
initialarray(#image[0][0], 65280); // зелёный
initialarray(#image2[0][0], 255); // красный

win dialog;
int static, percent;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 100, 1, 1);

for(int i=0; i<sizearray(image); i++)
{
visualwindow(dialog, 0, 0, 0, i, sizearray(image[]), 10, 10, 100, #image[0][0]);
visualwindow(dialog, 1, 0, 0, sizearray(image2)-i, sizearray(image2[]), 10+i, 10, 100, #image2[0][0]);
percent=i/2;
SetWindowText(static, format(percent));
sleep(5);
}

function getmessage(0, WM_CREATE)
{
dialog=formatiw(gethwnd(0));
static=CreateWindow(0, "STATIC", "", WS_CHILD | WS_VISIBLE, 100, 30, 50, 20, gethwnd(0), 0, 0, 0); // текст
}
 
 Top
007wan
Отправлено: 15 Августа, 2019 - 07:28:27
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




А как рисовать градиенты? Использовать оттенки разных цветов в линию, что бы получить градиент? Или загрузить изображение? Или есть программно уже типа CreateGradiend
(Добавление)(для просмотра ссылки Вам необходимо авторизоваться) Каша одна...
 
 Top
007wan
Отправлено: 15 Августа, 2019 - 11:27:06
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




 Zireael пишет:
CODE:
#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll");


int image[200][20], image2[200][20];
initialarray(#image[0][0], 65280); // зелёный
initialarray(#image2[0][0], 255); // красный

win dialog;
int static, percent;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 100, 1, 1);

for(int i=0; i<sizearray(image); i++)
{
visualwindow(dialog, 0, 0, 0, i, sizearray(image[]), 10, 10, 100, #image[0][0]);
visualwindow(dialog, 1, 0, 0, sizearray(image2)-i, sizearray(image2[]), 10+i, 10, 100, #image2[0][0]);
percent=i/2;
SetWindowText(static, format(percent));
sleep(5);
}

function getmessage(0, WM_CREATE)
{
dialog=formatiw(gethwnd(0));
static=CreateWindow(0, "STATIC", "", WS_CHILD | WS_VISIBLE, 100, 30, 50, 20, gethwnd(0), 0, 0, 0); // текст
}

Как переделать его, что бы не было for,а что бы был принцип такой:
-Вставляем строчку кода куда угодно, например "SetPreloader(50)"
Это передает в функцию и получается ползунок на 50% и так можно много раз 10, 20, 30, хоть 100 и снова 10 откатить прелоадер
(Добавление)
CODE:

function SetStatusBar(int a)
{
for(int i=a; i<sizearray(image); i++)
{
visualwindow(dialog, 0, 0, 0, i, sizearray(image[]), 10, 70, 100, #image[0][0]);
visualwindow(dialog, 1, 0, 0, sizearray(image2)-i, sizearray(image2[]), 10+i, 70, 100, #image2[0][0]);
percent=i/2;
SetWindowText(static, format(percent)+"%");
sleep(5);
}
}

SetStatusBar(50);
//sleep(5000);
Куда добавить?
(Добавление)
Вот сделал.
CODE:
function SetStatusBar(int a)
{

visualwindow(dialog, 0, 0, 0, a, sizearray(image[]), 10, 70, 100, #image[0][0]);
visualwindow(dialog, 1, 0, 0, sizearray(image2)-a, sizearray(image2[]), 10+a, 70, 100, #image2[0][0]);
percent=a/2;
SetWindowText(static, format(percent)+"%");
sleep(5);

}

SetStatusBar(50);
sleep(5000);
SetStatusBar(100);
sleep(5000);
SetStatusBar(150);
sleep(5000);
SetStatusBar(200);

(Добавление)
А как сделать тоже самое только без диалога, но с фоном диалога и что бы фон этого загрузчика появился не резко, а плавно.
Код (Отобразить)

(Добавление)
Вот например при установке хрома, мазилы появляется прямоугольник перед запуском, а потом сама установка.
(Добавление)
Дальше я попробую добавить градиент на полосу загрузки активной и статической тусклой части, потом фон диалога и я отдам код обратно, может кому-то такое нужно будет.
 
 Top
007wan
Отправлено: 15 Августа, 2019 - 16:57:06
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




Как создать градиентовую линию, не прибегая к изображения и наложению линий на линию в разных цветов, а только использую вин апи функции(хотя почти тоже самое)
 
 Top
Zireael
Отправлено: 16 Августа, 2019 - 02:11:02
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
Как создать градиентовую линию

CODE:
#define GRADIENT_FILL_RECT_H 0
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );

int hdc=GetDC(0);

char TRIVERTEX[32]; // структура TRIVERTEX
int coord[4]={200, 300, 500, 330} // координаты
int color[2]={65280, 255} // цвета (зелёный, красный)
int rect[2]={0, 1}
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]); // заполнение структуры TRIVERTEX


loop()
{
GradientFill(hdc, address(#TRIVERTEX[0]), 2, address(#rect[0]), 1, GRADIENT_FILL_RECT_H); // рисование
sleep(10);
}


function fill_structure(char #Vertex, int #pos, int #c)
{
codhex(pos[0], #Vertex[0]);
codhex(pos[1], #Vertex[4]);
codhex(rvalue(c[0]) * 256, #Vertex[8]);
codhex(gvalue(c[0]) * 256, #Vertex[10]);
codhex(bvalue(c[0]) * 256, #Vertex[12]);

codhex(pos[2], #Vertex[16]);
codhex(pos[3], #Vertex[20]);
codhex(rvalue(c[1]) * 256, #Vertex[24]);
codhex(gvalue(c[1]) * 256, #Vertex[26]);
codhex(bvalue(c[1]) * 256, #Vertex[28]);
}

(Добавление)
CODE:
#define GRADIENT_FILL_RECT_H 0
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );

int hdc=GetDC(0);

char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={200, 300, 700, 330, 200, 300, 700, 330} // координаты
int color[4]={180, 255, 0, 100} // цвета
int rect[4]={0, 1, 2, 3}


for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/10)
{
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
GradientFill(hdc, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_H); // рисование
sleep(350);
}
ReleaseDC(0, hdc);


function fill_structure(char #Vertex, int #pos, int #c)
{
for(int i=0; i<2; i++)
{
codhex(pos[i*4], #Vertex[i*32]);
codhex(pos[i*4+1], #Vertex[i*32+4]);
codhex(rvalue(c[i*2]) * 256, #Vertex[i*32+8]);
codhex(gvalue(c[i*2]) * 256, #Vertex[i*32+10]);
codhex(bvalue(c[i*2]) * 256, #Vertex[i*32+12]);

codhex(pos[i*4+2], #Vertex[i*32+16]);
codhex(pos[i*4+3], #Vertex[i*32+20]);
codhex(rvalue(c[i*2+1]) * 256, #Vertex[i*32+24]);
codhex(gvalue(c[i*2+1]) * 256, #Vertex[i*32+26]);
codhex(bvalue(c[i*2+1]) * 256, #Vertex[i*32+28]);
}
}
 
 Top
007wan
Отправлено: 16 Августа, 2019 - 08:14:09
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




А как сделать вертикальный градиаент, т.е вверху один цвет, а внизу другой и Для линии загрузки, которая двигается в право яркий цвет, а так, которая стоит на месте тусклый и серый.(нУ последнее я могу сам))
(Добавление)
Похожу GRADIENT_FILL_RECT_V
(Добавление)
Спасибо
(Добавление)
Zireael ,
CODE:
int coord[8]={200, 300, 700, 330, 200, 300, 700, 330} // êîîðäèíàòû

А где тут Икс игрек и высота и ширина? А то я методом прибавления и отнятия не смог вычислить, у меня прячмоугольник какой-то странный становится.
(Добавление)
А как уменьшить количество пикселей при переходе ползунка вправо на 1 %, что бы обеспечить плавность его работы не скачки резко, и что бы не повлияло это на размеры(высота и ширина)
CODE:
#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );

int hdc=GetDC(0);

char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={200, 300, 700, 330, 200, 300, 700, 330} // координаты
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}


for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
textout(0, 0, 0, format(i/5), 1);
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
GradientFill(hdc, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
sleep(350);
}
ReleaseDC(0, hdc);


function fill_structure(char #Vertex, int #pos, int #c)
{
for(int i=0; i<2; i++)
{
codhex(pos[i*4], #Vertex[i*32]);
codhex(pos[i*4+1], #Vertex[i*32+4]);
codhex(rvalue(c[i*2]) * 256, #Vertex[i*32+8]);
codhex(gvalue(c[i*2]) * 256, #Vertex[i*32+10]);
codhex(bvalue(c[i*2]) * 256, #Vertex[i*32+12]);

codhex(pos[i*4+2], #Vertex[i*32+16]);
codhex(pos[i*4+3], #Vertex[i*32+20]);
codhex(rvalue(c[i*2+1]) * 256, #Vertex[i*32+24]);
codhex(gvalue(c[i*2+1]) * 256, #Vertex[i*32+26]);
codhex(bvalue(c[i*2+1]) * 256, #Vertex[i*32+28]);
}
}

(Отредактировано автором: 16 Августа, 2019 - 08:18:55)

 
 Top
Zireael
Отправлено: 16 Августа, 2019 - 10:29:44
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
int coord[8]={200, 300, 700, 330, 200, 300, 700, 330}
А где тут Икс игрек и высота и ширина?

200, 300 - левый верхний угол прямоугольника.
700, 330 - правый нижний.
 
 Top
007wan
Отправлено: 17 Августа, 2019 - 03:49:26
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




А как сделать эффект появления прямоугольника и всего,что в нем плавным появлением? Думаю,если будет это,то я смогу сделать обратное - исчезание.
 
 Top
007wan
Отправлено: 17 Августа, 2019 - 11:14:03
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017  
Репутация: -2




У меня есть пару идей как это реализовать:
Первый: Использовать снимок экрана в прямоугольной области как размер прямоугольника статус бара(который белый прямоугольник), после снимка экрана в центре экрана небольшого прямоугольника, загружает его в Кибор и в папку с программой, далее меняет постепенно фон картинки в белый, но есть изъян: В момент изменения цвета и вывод картинки с меняющимся фоном может поменяться фон рабочего стола или открыта программа какая-то, что сделает картинку фоном рабчоего стола и оттенком белого цвета и будет не очень.

Второй: Тоже самое, но начальное будет визуальное окно, которое будет отображать рабочий стол или всё, что в центре прямоугольника меняется, а поверх накладывать изображение с прозрачностью.

Третий: вывести изображение и начальная прозрачность его будет 100%, а потом потепенно прибавляться.

Хочу заметить, что я не видел в win api функций для смены прозрачности элементом(прямоугольников, квадратов, линий...).
(Добавление)
Мне нужно именно использовать прозрачность как поноценную функцию, а не просто "продырявить" прямоугольник, мне нужно регулировать его состояние, например, поставить прозрачность 50% для Rectangle
(Добавление)
Нашел это, но не уверен, что знаю как использовать:
GdiTransparentBlt
(Добавление)
Что я использую не так?
CODE:
GdiTransparentBlt(DC, Display_Width/2-130, Display_Height/2-100, 300, 130, DC, Display_Width/2-130, Display_Height/2-100, 300, 130, 6908265);
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by