Метка: rad studio

Рисование на канве в Rad Studio Delphi

Рисование на канве в Rad Studio Delphi

Продолжение поста «Двойная буфферизация для Delphi 7»

Небольшой движок для рисования и пример вывода графики на канву в Rad Studio. Работает при создании:

multi-device application, при создании чисто Windows-приложений, жалуется на ошибочные функции DrawBitmap

var
Form1: TForm1;

Sprites : array of TBitmap;
Sprite_name: array of String;
proc:single;

implementation

{$R *.fmx}

function Sprite_Add(const FileName, SpriteName : string): TBitmap;
var
s:string;
i:integer;
begin
s:=spritename+’ ‘+filename;
try
SetLength(Sprites, Length(Sprites) + 1);
SetLength(Sprite_name, Length(Sprites) + 1);
Result := TBitmap.Create;
Result.LoadFromFile(FileName);
Sprites[Length(Sprites) — 1] := Result;
Sprite_name[Length(Sprites) — 1]:=SpriteName;
except
end;
end;

procedure Init;
var
i:integer;
begin

try
Sprites := nil;
Sprite_Add(‘art\start.bmp’,’background’);
except
end;
end;

procedure Sprite_Draw2(x, y, z, z2: single; s:string); //x, y, — процент где все находится z — размер
var
i, idx:integer;
R, R2: TRectF;
x2, y2:single;
popravka:integer;

begin
try
idx:=0;
for i:=0 to (Length(Sprites) — 1) do
if Sprite_name[i]=s then
begin
idx:=i;
Break;
end;

popravka:=0;

if (form1.ClientHeight/proc)>50 then popravka:=round((((form1.ClientHeight/proc)-50)/2)*proc);

x2:=(proc*x);
y2:=(proc*y/2);

R.Create(0,0,sprites[idx].Width,sprites[idx].Height);
R2.Create(x2,y2+popravka,x2+proc*z, y2+proc/2*z2+popravka);
form1.Canvas.DrawBitmap(Sprites[idx], R, R2, 100 );
except

end;
end;

// Вывод текста, х-у координаты (в процентах),
function textout(x, y, z, z2: single; text:string):TRectF;
var
i, idx:integer;
R, R2: TRectF;
x1, y1, x2, y2:single;
popravka:integer;

begin
popravka:=0;
proc:=form1.ClientWidth/100;
if (form1.ClientHeight/proc)>50 then popravka:=round((((form1.ClientHeight/proc)-50)/2)*proc);

x1:=form1.Width/100;
y1:=form1.Width/200;

x2:=(x1*x);
y2:=(y1*y);

result.Create(x2,y2+popravka,x2+x1*z, y2+y1*z2+popravka);
form1.Canvas. FillText(result,text ,true, 1,[], TTextAlign.Center, TTextAlign.Center);
end;

procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
begin
try
if Canvas.BeginScene then
try

canvas.Stroke.Kind := TBrushKind.Solid;
canvas.Stroke.Color := TAlphaColorRec.Yellow;
canvas.Fill.Color:= TAlphaColors.Yellow;
canvas.Font.Size:=20;
canvas.Stroke.Thickness:=3;
canvas.Font.Family:=’Impact’;
Sprite_Draw2(0, 0, 100, 100, ‘background’);
textout(33, 5, 10, 100, ‘CONTINUE’);
finally
Canvas.EndScene;
end;
except

end;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
proc:=form1.Width/ 100;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
init;
end;

Как я свои приложения на Android 64 переводил

Как я свои приложения на Android 64 переводил

В 2019 года, компания Google решила перевести все свои приложения на 64-битную платформу и предупредила об этом разработчиков. Все кто пишут приложения на Delphi Rad Studio столкнулись с тем, что компиляции под 64-битный режим не было.

И вот, наконец выходит Rad Studio 10.3.3, скачивается с торрентов, выбирается компиляция под Android 64 и приложение (созданное ранее) зависает на заставке. Ново-созданное приложение выдает такое:

Покопавшись, обнаружил что процессор моего Doogee Shoot хоть и поддерживает 64 операционную систему, но все доступные прошивки на него 32 битные. Засада.

Пришлось брать телефон жены (Samsung A30) и собирать проекты уже на нём.

Но как оказалось, просто так взять и добавить скомпилированное приложение не получиться, по хорошему нужно собирать так называемый Бандл который содержит 32 и 64 битные приложения. Делается он просто, нужно всего лишь поставить галку:

Однако Google не хочет принимать такой бандл, сетуя на установку каких-то дополнительных ключей-подписей:

Выбираем нужный пункт, скачиваем нужный jar-файл:

Запускаем консоль, лучше сразу в администраторском режиме:

И пишем подобный код:

java -jar PATH_TO_PEPK —keystore=PATH_TO_KEYSTORE —alias=ALIAS_YOU_USE_TO_SIGN_APK —output=PATH_TO_OUTPUT_FILE —encryptionkey=GOOGLE_ENCRYPTION_KEY

Описание:

PATH_TO_PEPK = Путь до скаченного вам файлаC:\pepk.jar
PATH_TO_KEYSTORE = Путь до вашего файла-ключей приложения C:\keystore.keystore
ALIAS_YOU_USE_TO_SIGN_APK = Пишем ALIAS:

PATH_TO_OUTPUT_FILE = путь выходного файла C:\private_key.pem
GOOGLE_ENCRYPTION_KEY = ваш ключ шифрования: eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a1

Пример, так как я скачивал всё в корневой каталог, то у меня выглядит всё вот так:

java -jar «C:\pepk.jar» —keystore=»C:\mykeystore» —alias=storm —output=»C:\private_key.pem» —encryptionkey=eb10fe8f7c7c9df715022017b00c6471f8ba8170b13

Два раза нужно будет ввести пароль для вашего существуюего ключа и на выходе получим искомый файл, который скармливаем Google:

Ура!

Теперь собираем сдвоенные бандлы (32+64) и публикуем их как раньше.

Theme: Overlay by Kaira Все права защищены 2003-2026
Love Delphi and Rad studio