007wan |
Отправлено: 16 Августа, 2019 - 13:36:52
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Доделал как я хотел. Спасибо, Zireael.
Код (Отобразить)CODE:#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
#define PS_DASH 1
#define SRCCOPY 13369376
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "DeleteDC", "DeleteDC", "Gdi32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "BitBlt", "BitBlt", "Gdi32.dll" );
external(INT, "TextOut", "TextOutA", "Gdi32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
int font = CreateFont(14, 0, 0, 0, 100, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
int coord_rectangle[4]={300, 100, 300, 130} // левый верхний угол прямоугольника и его размеры
#definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
int hdc, DC, bitmapDC;
hdc=GetDC(0);
DC=CreateCompatibleDC(hdc);
bitmapDC=CreateCompatibleBitmap(hdc, coord_rectangle[2], coord_rectangle[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={20, 55, 280, 65, 20, 55, 280, 65} // координаты линии
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
Object_Pen1 = CreatePen(PS_SOLID, 1, 6908265);
Object_Brush1 = CreateSolidBrush(15790320);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
int percent=i/(coord[2]-coord[0])*100;
textout(0, 0, 0, format(percent), 0);
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, coord_rectangle[2], coord_rectangle[3]);
SetTextColor(DC, 255);
SetBkMode(DC, 1);
TextOut(DC, 120, 10, "K2019Bot", 8);
TextOut(DC, 240, 70, format(percent)+"%", 4);
int old_font=SelectObject (DC, font);
TextOut(DC, 20, 70, "Unpack: C:\...\Temp\Image_0.bmp", 31);
SelectObject (DC, old_font);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
looptime(10)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
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]);
}
}
loop()
{
sleep(10);
}
Внимание! Отсутствуют переменные библиотеки. Замени это своим или вставь переменные. Цитата: #definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
(Добавление)
Только хотелось бы, что бы ты поменял кое-что, если не сложно, а то я запутаюсь.
Суть в том, что прямоугольник имеет свои координаты, текст - свои, другой текст тоже свои, а я хотел, что бы была некая зависимость: тоесть: меняешь координаты прямоугольника и меняются всех текстов автоматически, что бы самому не подгонять. А еще как-нибудь вывести по центру экрана. Заранее благодарю. |
|
|
Zireael |
Отправлено: 16 Августа, 2019 - 14:23:45
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: меняешь координаты прямоугольника и меняются всех текстов автоматически
Всё рисуется относительно левого верхнего угла прямоугольника. Если он смещается, то и всё что нарисовано тоже.
Цитата: int coord_rectangle[4]={300, 100, 300, 130} // левый верхний угол прямоугольника и его размеры
Цитата: А еще как-нибудь вывести по центру экрана.
Получить размеры экрана и разделить на 2 не такая уж сложная задача. |
|
|
007wan |
Отправлено: 17 Августа, 2019 - 12:15:59
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Можно пример с этим? ExtCreatePen
(Добавление)
007wan пишет: Доделал как я хотел. Спасибо, Zireael.
Код (Отобразить)CODE:#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
#define PS_DASH 1
#define SRCCOPY 13369376
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "DeleteDC", "DeleteDC", "Gdi32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "BitBlt", "BitBlt", "Gdi32.dll" );
external(INT, "TextOut", "TextOutA", "Gdi32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
int font = CreateFont(14, 0, 0, 0, 100, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
int coord_rectangle[4]={300, 100, 300, 130} // левый верхний угол прямоугольника и его размеры
#definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
int hdc, DC, bitmapDC;
hdc=GetDC(0);
DC=CreateCompatibleDC(hdc);
bitmapDC=CreateCompatibleBitmap(hdc, coord_rectangle[2], coord_rectangle[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={20, 55, 280, 65, 20, 55, 280, 65} // координаты линии
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
Object_Pen1 = CreatePen(PS_SOLID, 1, 6908265);
Object_Brush1 = CreateSolidBrush(15790320);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
int percent=i/(coord[2]-coord[0])*100;
textout(0, 0, 0, format(percent), 0);
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, coord_rectangle[2], coord_rectangle[3]);
SetTextColor(DC, 255);
SetBkMode(DC, 1);
TextOut(DC, 120, 10, "K2019Bot", 8);
TextOut(DC, 240, 70, format(percent)+"%", 4);
int old_font=SelectObject (DC, font);
TextOut(DC, 20, 70, "Unpack: C:\...\Temp\Image_0.bmp", 31);
SelectObject (DC, old_font);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
looptime(10)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
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]);
}
}
loop()
{
sleep(10);
}
Внимание! Отсутствуют переменные библиотеки. Замени это своим или вставь переменные. Цитата: #definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
(Добавление)
Только хотелось бы, что бы ты поменял кое-что, если не сложно, а то я запутаюсь.
Суть в том, что прямоугольник имеет свои координаты, текст - свои, другой текст тоже свои, а я хотел, что бы была некая зависимость: тоесть: меняешь координаты прямоугольника и меняются всех текстов автоматически, что бы самому не подгонять. А еще как-нибудь вывести по центру экрана. Заранее благодарю. А где выдерживать паузы в конце и а начале. что бы при запуске было "0%" секунд 2, а после 2 сек шло до 100% как обычно по скорости и на 100% ждало 2 секунды и скрипт завершался
(Добавление)
Вот еще нашел. Похожу то самое.
Клик
(Добавление)
Только в структурах не шарю |
|
|
Zireael |
Отправлено: 17 Августа, 2019 - 13:48:43
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: А где выдерживать паузы в конце и а начале. что бы при запуске было "0%" секунд 2, а после 2 сек шло до 100% как обычно по скорости и на 100% ждало 2 секунды и скрипт завершался
code (Отобразить)CODE:#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
#define PS_SOLID 0
#define SRCCOPY 13369376
#define RUSSIAN_CHARSET 204
#define OUT_DEFAULT_PRECIS 0
#define CLEARTYPE_QUALITY 5
#define FF_DONTCARE 0
#define CLIP_DEFAULT_PRECIS 0
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "DeleteDC", "DeleteDC", "Gdi32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "BitBlt", "BitBlt", "Gdi32.dll" );
external(INT, "TextOut", "TextOutA", "Gdi32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
int font = CreateFont(14, 0, 0, 0, 100, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
int coord_rectangle[4]={300, 100, 300, 130} // левый верхний угол прямоугольника и его размеры
int hdc, DC, bitmapDC;
hdc=GetDC(0);
DC=CreateCompatibleDC(hdc);
bitmapDC=CreateCompatibleBitmap(hdc, coord_rectangle[2], coord_rectangle[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={20, 55, 280, 65, 20, 55, 280, 65} // координаты линии
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
Object_Pen1 = CreatePen(PS_SOLID, 1, 6908265);
Object_Brush1 = CreateSolidBrush(15790320);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
int percent=i/(coord[2]-coord[0])*100;
textout(0, 0, 0, format(percent), 0);
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, coord_rectangle[2], coord_rectangle[3]);
SetTextColor(DC, 255);
SetBkMode(DC, 1);
TextOut(DC, 120, 10, "K2019Bot", 8);
TextOut(DC, 240, 70, format(percent)+"%", size(format(percent))+1);
int old_font=SelectObject (DC, font);
TextOut(DC, 20, 70, "Unpack: C:\...\Temp\Image_0.bmp", 31);
SelectObject (DC, old_font);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
if(percent==0)
{
looptime(2000)
{
textout(1, 0, 20, "Ждём 2 секунды", 1);
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
textout(1, 0, 20, "", 1);
}
looptime(10)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
if(percent==100)
{
looptime(2000)
{
textout(1, 0, 20, "Ждём 2 секунды", 1);
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
}
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
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]);
}
} |
|
|
007wan |
Отправлено: 17 Августа, 2019 - 13:55:26
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , А почему возле "%" при запуске не красиво мешает "Э"?
Я думаю это как-то связанно с буфером, что я его не скопировал.
Код (Отобразить)#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
#define PS_DASH 1
#define SRCCOPY 13369376
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "DeleteDC", "DeleteDC", "Gdi32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "BitBlt", "BitBlt", "Gdi32.dll" );
external(INT, "TextOut", "TextOutA", "Gdi32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll" );
external(INT, "FrameRect", "FrameRect", "User32.dll");
external(INT, "GdiTransparentBlt", "GdiTransparentBlt", "Gdi32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
getdisplay(Display_Color, Display_Width, Display_Height);
int font = CreateFont(14, 0, 0, 0, 100, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
int coord_rectangle[4]={Display_Width/2-130, Display_Height/2-100, 300, 130} // левый верхний угол прямоугольника и его размеры
#definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
int Display_Color, Display_Width, Display_Height;
int hdc, DC, bitmapDC;
hdc=GetDC(0);
DC=CreateCompatibleDC(hdc);
bitmapDC=CreateCompatibleBitmap(hdc, coord_rectangle[2], coord_rectangle[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={20, 55, 280, 65, 20, 55, 280, 65} // координаты линии
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
Object_Pen1 = CreatePen(PS_INSIDEFRAME, 2, 6908265);
Object_Brush1 = CreateSolidBrush(15790320);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
int percent=i/(coord[2]-coord[0])*100;
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, coord_rectangle[2], coord_rectangle[3]);
SetTextColor(DC, 255);
SetBkMode(DC, 1);
TextOut(DC, 120, 10, "K2019Bot", 8);
TextOut(DC, 240, 70, format(percent)+"%", 4);
int old_font=SelectObject (DC, font);
TextOut(DC, 20, 70, "Unpack: C:\...\Temp\Image_0.bmp", 31);
SelectObject (DC, old_font);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
if(percent==0)
{
looptime(2000)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
looptime(10)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
if(percent==100)
{
looptime(2000)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
}
/*
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
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]);
}
}
|
|
|
Zireael |
Отправлено: 17 Августа, 2019 - 13:59:45
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: TextOut(DC, 240, 70, format(percent)+"%", 4);
Последний параметр указывает что строка длиной 4. 0% это разве 4 символа?
CODE:TextOut(DC, 240, 70, format(percent)+"%", size(format(percent))+1); |
|
|
007wan |
Отправлено: 17 Августа, 2019 - 14:51:23
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: TextOut(DC, 240, 70, format(percent)+"%", 4);
Последний параметр указывает что строка длиной 4. 0% это разве 4 символа?
CODE:TextOut(DC, 240, 70, format(percent)+"%", size(format(percent))+1); Да я в курсе, что накосячил, но блин меня надоели эти char strcopy только место занимают, но это не значит, что я должен всё подряд стирать.
(Добавление)
007wan пишет: Zireael , А почему возле "%" при запуске не красиво мешает "Э"?
Я думаю это как-то связанно с буфером, что я его не скопировал.
Код (Отобразить)#define GRADIENT_FILL_RECT_H 0
#define GRADIENT_FILL_RECT_V 1
#define PS_DASH 1
#define SRCCOPY 13369376
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "DeleteDC", "DeleteDC", "Gdi32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "BitBlt", "BitBlt", "Gdi32.dll" );
external(INT, "TextOut", "TextOutA", "Gdi32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll" );
external(INT, "FrameRect", "FrameRect", "User32.dll");
external(INT, "GdiTransparentBlt", "GdiTransparentBlt", "Gdi32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
getdisplay(Display_Color, Display_Width, Display_Height);
int font = CreateFont(14, 0, 0, 0, 100, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
int coord_rectangle[4]={Display_Width/2-130, Display_Height/2-100, 300, 130} // левый верхний угол прямоугольника и его размеры
#definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
int Display_Color, Display_Width, Display_Height;
int hdc, DC, bitmapDC;
hdc=GetDC(0);
DC=CreateCompatibleDC(hdc);
bitmapDC=CreateCompatibleBitmap(hdc, coord_rectangle[2], coord_rectangle[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
char TRIVERTEX[64]; // структура TRIVERTEX
int coord[8]={20, 55, 280, 65, 20, 55, 280, 65} // координаты линии
int color[4]={3329330, 0, 9470064, 65539} // цвета
int rect[4]={0, 1, 2, 3}
Object_Pen1 = CreatePen(PS_INSIDEFRAME, 2, 6908265);
Object_Brush1 = CreateSolidBrush(15790320);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
int percent=i/(coord[2]-coord[0])*100;
coord[4]=coord[0]+i;
fill_structure(#TRIVERTEX[0], #coord[0], #color[0]);
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, coord_rectangle[2], coord_rectangle[3]);
SetTextColor(DC, 255);
SetBkMode(DC, 1);
TextOut(DC, 120, 10, "K2019Bot", 8);
TextOut(DC, 240, 70, format(percent)+"%", 4);
int old_font=SelectObject (DC, font);
TextOut(DC, 20, 70, "Unpack: C:\...\Temp\Image_0.bmp", 31);
SelectObject (DC, old_font);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V); // рисование
if(percent==0)
{
looptime(2000)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
looptime(10)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
if(percent==100)
{
looptime(2000)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
}
}
/*
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
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]);
}
}
А почему при запуске "0%" и через пару секунд полоса загрузки чуть прибавляется вправо и еще через 2 секунды она идет своим чередом? Как сделать, что бы она ровно 2 секунды стояла пустой.
Тема закрыта! Продолжение в теме "вопрос по external и др - 3".
|
|
|
|