Эксперт
Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как на скриншоте текст написать?
Может пригодится кому-то:
Функция добавляющая надпись на скриншот (Отобразить)CODE:#define CP_ACP 0
#define NULL 0
#define UnitPixel 2
#define StatusOk 0
external(INT, "DeleteFile", "DeleteFileA", "Kernel32.dll");
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll");
external(INT, "GdiplusStartup", "GdiplusStartup", "Gdiplus.dll");
external(INT, "GdiplusShutdown", "GdiplusShutdown", "Gdiplus.dll");
external(INT, "GdipLoadImageFromFile", "GdipLoadImageFromFile", "Gdiplus.dll");
external(INT, "GdipSaveImageToFile", "GdipSaveImageToFile", "Gdiplus.dll");
external(INT, "GdipGetImageGraphicsContext", "GdipGetImageGraphicsContext", "Gdiplus.dll");
external(INT, "GdipCreateFontFamilyFromName", "GdipCreateFontFamilyFromName", "Gdiplus.dll");
external(INT, "GdipCreateFont", "GdipCreateFont", "Gdiplus.dll");
external(INT, "GdipCreateSolidFill", "GdipCreateSolidFill", "Gdiplus.dll");
external(INT, "GdipCreateStringFormat", "GdipCreateStringFormat", "Gdiplus.dll");
external(INT, "GdipGetImageBounds", "GdipGetImageBounds", "Gdiplus.dll");
external(INT, "GdipDrawString", "GdipDrawString", "Gdiplus.dll");
external(INT, "CLSIDFromString", "CLSIDFromString", "Ole32.dll");
external(INT, "GdipDisposeImage", "GdipDisposeImage", "Gdiplus.dll");
external(INT, "GdipDeleteFontFamily", "GdipDeleteFontFamily", "Gdiplus.dll");
external(INT, "GdipDeleteFont", "GdipDeleteFont", "Gdiplus.dll");
external(INT, "GdipDeleteGraphics", "GdipDeleteGraphics", "Gdiplus.dll");
external(INT, "GdipDeleteBrush", "GdipDeleteBrush", "Gdiplus.dll");
external(INT, "GdipDeleteStringFormat", "GdipDeleteStringFormat", "Gdiplus.dll");
string path_in = tempfolder() + "TmpImage.bmp"; // путь для сохранения скрина
string path_out = "C:\ResultImage.bmp"; // куда сохранить результат
string text = "https:/^/kibor-bot.com"; // текст
string family_name = "Courier New"; // шрифт
double size_font = 48; // размер шрифта
int text_pos_x = 500; // позиция текста по X
int text_pos_y = 400; // позиция текста по Y
int displayColor, displayX, displayY; // переменные для получения размером экрана
pause(1000); // пауза чтобы кибор свернулся
getdisplay(displayColor, displayX, displayY); // получить размеры экрана
savescreen(path_in, 0, 0, displayX, displayY, -1); // сохранить скрин во временной папке
// вызов функции, в которой будет добавлена надпись на скрин
TextInScreenshot(path_in, path_out, text, family_name, size_font, text_pos_x, text_pos_y);
DeleteFile(path_in); // удалить скрин
start(path_out); // открыть изображение с добавленным текстом
// функция для добавления текста на скрин
// принимаемые параметры:
// 1. Путь к файлу
// 2. Путь куда сохранить итоговое изображение
// 3. Текст
// 4. Шрифт
// 5. Размер шрифта
// 6. Позиция текста по X
// 7. Позиция текста по Y
function TextInScreenshot(string Path_in, string Path_out, string Text, string FamilyName, double SizeFontF, int PosX, int PosY)
{
if(fopen(Path_in, "rb"))fclose();
else
{
messagebox("Файл не существует");
return;
}
int gdiplusToken;
char gdiplusStartupInput[16];
initialarray(#gdiplusStartupInput[0], 0);
writeaddress(1, address(#gdiplusStartupInput[0]));
GdiplusStartup(address(#gdiplusToken), address(#gdiplusStartupInput[0]), 0);
char wchar[999];
char CLSID[16];
string CLSID_BMP = "{557cf400-1a04-11d3-9a73-0000f81ef32e}"; //bmp
int Img, Graphics, FontFamily, Font, Brush, StringFormat,srcUnit, FontSize;
int srcRect[4];
MultiByteToWideChar(CP_ACP, 0, Path_in, -1, address(#wchar[0]), sizearray(wchar));
GdipLoadImageFromFile(address(#wchar[0]), address(#Img));
GdipGetImageGraphicsContext(Img, address(#Graphics));
MultiByteToWideChar(CP_ACP, 0, FamilyName, -1, address(#wchar[0]), sizearray(wchar));
GdipCreateFontFamilyFromName(address(#wchar[0]), NULL, address(#FontFamily));
FontSize = floattoint(SizeFontF);
GdipCreateFont(FontFamily, FontSize, 0, UnitPixel, address(#Font));
GdipCreateSolidFill(colorRGBA(255, 0, 0, 255), address(#Brush));
GdipCreateStringFormat(0, 0, address(#StringFormat));
MultiByteToWideChar(CP_ACP, 0, Text, -1, address(#wchar[0]), sizearray(wchar));
GdipGetImageBounds(Img, address(#srcRect[0]), address(#srcUnit));
srcRect[0] = floattoint(PosX);
srcRect[1] = floattoint(PosY);
GdipDrawString(Graphics, address(#wchar[0]), -1, Font, address(#srcRect[0]), StringFormat, Brush);
MultiByteToWideChar(CP_ACP, 0, CLSID_BMP, -1, address(#wchar[0]), sizearray(wchar));
CLSIDFromString(address(#wchar[0]), address(#CLSID[0]));
MultiByteToWideChar(CP_ACP, 0, Path_out, -1, address(#wchar[0]), sizearray(wchar));
int result = GdipSaveImageToFile(Img, address(#wchar[0]), address(#CLSID[0]), NULL);
if(result!=StatusOk)messagebox("Не удалось сохранить файл^r^nКод ошибки: "+format(result));
GdipDeleteGraphics(Graphics);
GdipDeleteStringFormat(StringFormat);
GdipDeleteBrush(Brush);
GdipDeleteFont(Font);
GdipDeleteFontFamily(FontFamily);
GdipDisposeImage(Img);
GdiplusShutdown(gdiplusToken);
}
function floattoint(double x)
{
char f[4];
codhex(x, #f[0]);
return addressi(address(#f[0]));
}
function colorRGBA(int R, int G, int B, int Alpha)
{
char f[4];
f[0]=formatic(B); f[1]=formatic(G); f[2]=formatic(R); f[3]=formatic(Alpha);
int result = codhexi(#f[0], 4);
return result;
} |