Рисование на канве в 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;

Цыгане и генераторы

Цыгане и генераторы

Осенью 2025 года, наши недруги попытались отправить город Белгород в блекаут и потушили несколько ТЭЦ. Энергоснабжение города было восстановлено, но губернатор рекомендовал индивидуальным домовладельцам приобрести генераторы на случай отключения. Тут я вспомнил, что в гараже лежит отличный генератор от Хонды eg5500cxs, который в 22-году купил мой отец с братом у цыган (которые якобы «позаимствовали» его у армейцев) за какие-то смешные 30 тысяч рублей. Посмотрев текущую цену этого генератора — я удивился:

И конечно, тут же закрались сомнения. Документы приложенные к генератору, выглядили достаточно достоверно:

но чек на покупку, почему-то за 4-ре года никак не выцвел, и явно напечатан на принтере, QR код никуда не ведет, ИНН и прочие коды написаны просто от балды. Оказалось на рынке давно работает генераторная мафия, и подробнее о ней можно почитать вот тут:

https://gen7.ru/blog/poddelki-generatorov-vse-o-poddelkakh-generatorov-na-rynke-rossii

Главное отличие это вес: оригинальный генератор весит больше 100килограм (и это без аккумулятора), а цыганский хоть и тяжелый но вполне подъемный и переносимый в одиночку.

Сам генератор оказался рабочим, но выдать заявленные 5квт он явно не в силах, но и 1-2кВт для современного дома — это и так выше креыши. Но под нагрузкой я его еще не держал, и надеюсь не придется. Красная цена подобных генераторов — 10к, так что вот даже умные люди решившие надурить цыган и купить товар по дешевке — все равно попадают в их козни.

Не ведитесь.

No, I’m not a Human — логический хоррор

No, I’m not a Human — логический хоррор

No, I’m not a Human нашел в статье хабра, где описывались игровые новинки 2025. В первую очередь игра зацепила интересной графикой, где грамотно замиксовано 3D и этакий стиль российских 90-ых. Сюжет прост как две копейки — вспышки на солнце запустили какую-то реакцию, и теперь из под земли выходят странные творения похожие на людей — их называют Гости.

Кроме того солнце жарит на всю катушку и ходить днём невыносимо, люди теряют жильё и ищут помощь. Как владелец загороднего дома, вы можете оказать им помощь, но что если среди людей вы пустите Гостя? Что это за создания, как их вычислить, можно ли спасти людей, и почему белому дохляку нельзя говорить что вы Одни дома? Вот это всё вам и придется выяснить.

В первых прохождениях интересно полностью погрузится в ЛОР игры, слушать радио, смотреть в окна ночью, а затем можно наслаждаться чистой логикой — вычислять по признакам гостей, сдавать нерадивых специальным службам, и пытаться всё таки выжить. И если первое прохождение длится несколько часов, то последующие становятся гораздо короче — а реиграбельность у No, I’m not a Human просто огромная, нужно еще не забывать, что нас ждет более 10 концовок.

Игра очень напомнила 60 parsecs, где тоже важно грамотное планирование и расчет. Там тоже нужно чем-то или кем-то жертвовать для общего блага, а идеального прохождения просто не существует. В своем чарте No, I’m not a Human — точно ставлю на первое место игроновинок 2025 года.

No, I’m not a Human найти можно в стиме https://store.steampowered.com/app/3180070/No_Im_not_a_Human/
или не встиме ^_^  https://rutracker.org/forum/viewtopic.php?t=6744939

 

Мопсы или деградация собак

Мопсы или деградация собак

Интересная статья где описываются, почему породы собак выводимые веками или даже тысячилетями сейчас быстро деградируют:

https://habr.com/ru/articles/978950/

Места без света

Места без света

Читая статью про бюджетное астро-фотографирование (тыц) узнал, что звезды можно снимать практически на любую камеру смартфона используя несколько вариантов — как програмные, типа снимая сотни фотографий и соединяя их с помощью специальных программулин, либо просто выехав подальше от города — чтоб не было святого загрязнения. А в полной темноте ставим чуть больше выдержку и ждем. Артефакты съмок коррректируются так же програмно.

В комментариях увидел две ссылки на ресурсы показывающие источники света:

https://www.lightpollutionmap.info

Был очень удивлен, что Москва это самый ярко-освещенный город на планете. А вот в черноземье, где я обитаю, мест для астросьемки практически нет. Всё засвечено фонарями и теплицами.

Правда оказалось, что это карта за 2015 год, и за десять лет много что изменилось, поэтому я пошел на следующий ресурс:

https://djlorenz.github.io/astronomy/lp/overlay/dark.html

По итогу десяти лет — Дубаи светят практически так же ярко как и Москва, а вот наши соседи превратились в черное пятно — света на Украине, кроме крупных городов, нет вообще О_О Идеальные условия для астро-съемки.

Черноземье, из-за обилия новых дешевых светодиодных фонарей столо еще ярче, нормальные ночные места есть только в других областях 🙁

Но к звездным съемкам все равно готовлюсь, в идеале бы снять, что то типа такого:

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