-
Постов
2 517 -
Зарегистрирован
-
Посещение
-
Победитель дней
265
Весь контент Равиль Зарипов (ZuBy)
-
procedure LoadResizeBitmapFromURL(const AURL: string; aBitmap: TBitmap; const aWidth, aHeight: integer); // uses System.Net.HTTPClient, System.Net.HTTPClientComponent var thread: TThread; begin thread := TThread.CreateAnonymousThread( procedure var Http: THTTPClient; Result: TMemoryStream; begin Result := TMemoryStream.Create; Http := THTTPClient.Create; try try Http.Get(AURL, Result); TThread.Synchronize(TThread.CurrentThread, procedure var aSourceBmp, aResizeBmp: TBitmap; aSrcRect, aDestRect: TRectF; begin aSourceBmp := TBitmap.Create; aSourceBmp.LoadFromStream(Result); if not aSourceBmp.IsEmpty then begin aResizeBmp := TBitmap.Create(aWidth, aHeight - 2); aResizeBmp.Canvas.BeginScene; if aSourceBmp.Width > aWidth then aSourceBmp.Resize(aWidth, round(aSourceBmp.Height * aWidth / aSourceBmp.Width)); aSrcRect := RectF(0, round((aSourceBmp.Height - aHeight - 2) / 2), aWidth, round((aSourceBmp.Height - aHeight - 2) / 2) aHeight - 2); aDestRect := RectF(0, 0, aWidth, aHeight - 2); aResizeBmp.Clear(0); aResizeBmp.Canvas.DrawBitmap(aSourceBmp, aSrcRect, aDestRect, 1, false); aResizeBmp.Canvas.EndScene; aBitmap.Clear(0); aBitmap.SetSize(aWidth, aHeight - 2); aBitmap.CopyFromBitmap(aResizeBmp); FreeAndNil(aResizeBmp) end; FreeAndNil(aSourceBmp); end); except FreeAndNil(Result); end; finally FreeAndNil(Result); FreeAndNil(Http); end; end); thread.FreeOnTerminate := true; thread.start; end; я использую вот такой код, сразу с ресайзом под нужный размер использовать так, НЕ В ПОТОКЕ LoadResizeBitmapFromURL('image-url', Image1.Bitmap, 120, 120);
- 16 ответов
-
- android
- firemonkey
-
(и ещё 2 )
C тегом:
-
ShowShareSheetAction1.TextMessage := 'Текст'; ShowShareSheetAction1.ExecuteTarget(<тут контрол>);
-
// uses zLib; var aCompress: TBytes; begin aCompress := ZCompressStr('Привет FMX Developer :)', TZCompressionLevel.zcMax); ShowMessage(ZDecompressStr(aCompress)); end;
-
нет, я просто так привык
-
я придумал только так, может есть и лучше способ FindInLB.rar
-
на скорую руку SubMenu.zip
-
вот так примерно это делается FindInLB.zip
-
вы забываете про StyledSettings ListBoxGroupHeader.StyledSettings := ListBoxGroupHeader.StyledSettings - [TStyledSetting.Size, TStyledSetting.FontColor];
-
<TListBox>.ItemByIndex(i).ItemData.Detail
-
это нормальное поведение, просто это разрешение включено по дефалту, поэтому я нигде не указываю о его нужде. Уже не первый раз такой вопрос, видимо нужно указывать
- 40 ответов
-
циклом пройтись по всем элементам и проверить на соответствие, найденные в другой LB