Hogyan lehet hozzáadni az időzítő összetevőhöz, és lehetővé válik az összetevők képfejlődésének megváltoztatása -

Hogyan lehet hozzáadni az időzítő összetevőhöz, és lehetővé válik az összetevők képfejlődésének megváltoztatása -

A következő probléma - a TImage figyelmen kívül hagyja a TRectangle által beállított XRadius és YRadius értékeket (10.1 Berlin a 2. frissítéssel)

Essence - A TRectangle sarkokat kissé lekerekítettem, ezért telepítem az XRadiust és a YRadiust. A TRectangle egy TImage (a bal felső sarokban 0,0, a szélesség és a magasság ugyanaz, mint a TRectangle méretek). Amikor betölt egy képet TImage (a tervező, hogy a szoftver), kiderül, hogy a TImage jelenik derékszögben, figyelmen kívül hagyva XRadius YRadius és a szülő. A TRectangle ClipChildren tulajdonsága meg van adva.






Hogyan tudom a TImage-t kerekíteni? Érdekes módon, a TCircle e tekintetben működik, a TImage elvágásával.

Hogyan lehet hozzáadni az időzítő összetevőhöz, és lehetővé válik az összetevők képfejlődésének megváltoztatása -

Egy cross-platform alkalmazást írok. A keresés eredménye a TGrid-ban jelenik meg. Arra a kérdésre volt szükség, hogy egy képet mutasson az egyik oszlopban.
A Windows-on minden rendben van, de a táblagépen egyszerűen csodák vannak: az első kijelzőn minden rendben van, de ha csak lefelé és lefelé haladsz, amikor a képeket mások dörzsölik, akkor a rész általában fejjel lefelé jelenik meg.
A kép mentésének kódja (jpg) az adatbázisba:
ha hozzárendelt (sm), akkor kezdődik sm.Position: = 0; //TBlobField(dmData.cdsPlayerData.FieldByName('Photo')).LoadFromStream(sm); vImage: = TImage.Create (nil); próbálja sm.Position: = 0; vImage.Bitmap.LoadFromStream (sm); vKoef: = vImage.Bitmap.Height / 64; vImage.Bitmap.Resize (TRUNC (vImage.Bitmap.Width / vKoef), TRUNC (vImage.Bitmap.Height / vKoef)); sm.Free; sm: = TMemoryStream.Create (); próbálja meg a vImage.Bitmap.SaveToStream (sm) parancsot; TBlobField (dmData.cdsPlayerData.FieldByName ('SmallPhoto')) LoadFromStream (sm); végül sm.Free; végén; végül vImage.Free; végén; végén; A görgetésig:

Megpróbálta mind a LiveBinding-ot, mind a kézi rajzot - az eredmény ugyanaz. Bármely ötlet, mi a baj?
Ui Tudom, hogy mit kell tenni a TListView segítségével, de az ügyfél "hasonlóan szeretne a régi programban", mivel az android csak a tablettákon dolgozik - állapítottam meg.

Hogyan lehet hozzáadni az időzítő összetevőhöz, és lehetővé válik az összetevők képfejlődésének megváltoztatása -

var s: string; fs: TFileStream; fs kezdete: = TFileStream.Create (tpath.Combine (tpath.GetDownloadsPath, 'load.jpg'), fmCreate); NetHTTPClient1.Get ((Sender as TImage) .Hint, fs); fs.Free; (Küldő, mint TImage) .MultiResBitmap.Bitmaps [1] .LoadFromFile (tpath.Combine (tpath.GetDownloadsPath, 'load.jpg')); csatlakoztatott egy másik pas megtalálható ezen a fórumon FMX.Features.Bitmap.Helpers.pas
(Feladó mint TImage) MultiResBitmap.Bitmaps [1] .LoadFromUrl ((Sender as TImage) .Hint); Hogyan könnyebb tanácsot adni, és betöltésre került, és az űrlap nem függött?

Hogyan lehet hozzáadni az időzítő összetevőhöz, és lehetővé válik az összetevők képfejlődésének megváltoztatása -

Üdvözlünk!
A feladat feltölteni a fotókat és megjeleníteni őket a listán. Úgy tűnik, mint két ujj, de.
A kód hosszú ideig működött, mindent betöltve és megjelenített. Egy idő után a fotók nem voltak betöltve. A hibakeresés egy zárt végtelen hurokot mutatott be ebben az eljárásban:
eljárás TBitmap.AssignFromSurface (const Forrás: TBitmapSurface); var BitmapData: TBitmapData; MaxSize: Integer; Újramintott felület: TBitmapSurface; I: Integer; SourceRect: TRectF; kezdődik a MaxSize: = CanvasClass.GetAttribute (TCanvasAttribute.MaxBitmapSize); <-- MaxSize = 0 if (Source.Width> MaxSize) vagy (Source.Height> MaxSize), majd indítsa el a SourceRectet: = TRectF.Create (0, 0, Source.Width, Source.Height); SourceRect.Fit (TRectF.Create (0, 0, MaxSize, MaxSize)); ResampledSurface: = TBitmapSurface.Create; próbáld meg a ResampledSurface.StretchFrom (Forrás, Trunc (SourceRect.Width), Trunc (SourceRect.Height), PixelFormat); AssignFromSurface (ResampledSurface); <-- infinity loop here finally ResampledSurface.Free; end; end else begin SetSize(Source.Width, Source.Height); if Map(TMapAccess.Write, BitmapData) then try for I := 0 to TBitmapSurface(Source).Height - 1 do Move(TBitmapSurface(Source).Scanline[I]^, BitmapData.GetScanline(I)^, BitmapData.BytesPerLine); finally Unmap(BitmapData); end; end; end; В самом начале процедуры MaxSize получает значение 0 (ноль!), размеры картинки больше нуля и процедура влетает в бесконечный цикл на строке






AssignFromSurface (ResampledSurface);

Valaki szembenézett? Vannak gondolatok, hogyan kell kezelni?
Köszönöm mindenkinek!

A nap minden kedves ideje. Szükséges volt egy ilyen probléma megoldása: a MySQL adatbázistábla tartalmazza a képek listáját és azok URL-jeit. Ezt a listát egy tömbön keresztül kell elérni. Ezután töltsd fel a képeket, és váltakozva mutasd meg azokat időközönként a TImage segítségével.
Megértettem, hogy helyesebb a PHP-szkript használatával a képek listáját lekérni, de milyen formában kell a szkriptnek visszaadnia az adatokat, hogy a Delphi-ben ne tudjam meg, hogyan kell elrendezni őket.
Korábban, az itt használt képek beszerzéséhez. De a kérdés az, hogy hol tárolja a képeket, mielőtt bemutatná őket a TImage-nek? Több MemoryStream létrehozása?
eljárás LoadWebImage (url: string; kép: TBitmap);
var
idhttp. TNetHTTPClient;
ms. TMemoryStream;
kezdődik
IdHTTP: = TNetHTTPClient.Create (null);
ms: = TMemoryStream.Create;
megpróbál
idhttp.Get (url, ms);
ms.Position: = 0;
image.LoadFromStream (ms);
végül
ms.Free;
idhttp.Free;
végén;
végén;

Hogyan lehet hozzáadni az időzítő összetevőhöz, és lehetővé válik az összetevők képfejlődésének megváltoztatása -

Jó napot. Van egy probléma, amellyel már nem tudtam megbirkózni több hete. Van egy régi kód a WinAPI alatt, újra kell újítani az Androidot a firemonkey segítségével. És a fő probléma az, hogy van egy kód, amely a saját formátumából teszi a HBITMAP-ot a WinAPI-ból. Valójában ez az a szerkezet, ahol az utolsó mező a bitekre mutató mutatók. Könnyen átdolgozható, létrehozva saját példányát egy ilyen struktúrából. De most le kell fordítanom a TBitmapre, és nem igazán értem, hogyan kell csinálni.

Hogyan lehet hozzáadni az időzítő összetevőhöz, és lehetővé válik az összetevők képfejlődésének megváltoztatása -

Kedves nappali! Mondja meg, hogyan lehet megtudni a TImage-ban betöltött kép eredeti méretét.

Hogyan lehet hozzáadni az időzítő összetevőhöz, és lehetővé válik az összetevők képfejlődésének megváltoztatása -

Gyakran, amikor rajz a vásznon bittérkép módszert alkalmazzuk DrawBitmap, ahol, különösen, mint egy érv meg kell határoznia a téglalap régió a forrás (SrcRect) és a vevő (DestRect). Ezek a négyszögek rögzítési formátummal rendelkeznek (balra, jobbra, jobbra, alulra).
Amikor az egész bitképet az egész SrcRect-ről, mint az Osipov űrlapján és könyvében meghatározták, a következő bejegyzést láttam:
RectF (0,0, ABitmap.Width, ABitmap.Height) De a logika azt diktálja, hogy ez legyen a méret a bitmap 1 pixel mind vízszintesen, mind függőlegesen több mint amilyen valójában, hiszen az első pixel koordinátái (0, 0) és az utolsó (ABitmap.Width, ABitmap.Height). Amely valószínűleg torzuláshoz vezet, amikor egy bittérképet jelenít meg a vászonon.
Úgy gondolom, hogy egy teljes bitkép rajzolásakor ilyen módon kell írni:
RectF (0,0, ABitmap.Width-1, ABitmap.Height-1) Jó vagy rossz? Ha nem, miért?

Hello, barátok!
Mondd el nekem, hogy a maximális sebességgel hogyan határozhatja meg a kép hiányát a TBitmap-ban?
Ie - TBitmap. Tele van képzel (kép), vagy teljesen fekete téglalap.
Hogyan tudhatja meg, mi a kép benne? Ie - NEM feltétlenül fekete téglalap.
És meghatározni, hogy "azonnal" (feltételesen szólva) szükséges.
Előre mindenki hálás a részvételért!
Ui Az alábbiakhoz hasonló opciók - nem kínálnak)) "gyorsan" szeretnék valamit! Köszönjük ismét!
funkció IsBitmapEmpty (Bmp: TBitmap): logikai; var X, Y. Integer; BmpData: TBitmapData; yAddr. integer; AlphaCount. integer; kezdődik Eredmény: = hamis; próbáld AlphaCount: = 0; Bmp.Map (TMapAccess.Read, BmpData); Y esetén: = 0 - Bmp.Height div 2 kezd YAddr: = Y * Bmp.Height; X: = 0 - Bmp.Width - 1 ha (PAlphaColorArray (BmpData.Data) ^ [YAddr + X] <> TAlphaColorRec.Null) és (PAlphaColorArray (BmpData.Data) ^ [YAddr + X] <> TAlphaColorRec.Black), majd írja be inc (AlphaCount); break; végén; ha AlphaCount> 0 majd Break; végén; végül Bmp.Unmap (BmpData); Eredmény: = AlphaCount = 0; végén; végén;

Delphi Seattle, Android 5.0.1
A képet a ScanLine segítségével alkotom. A kimeneten az eredményül kapott bitkép a TImage-on van rajzolva, amelyen a Rect előzőleg rajzolt.
A GlobalBitmap generált tbitmap.
az ObjectPreviewImage.Bitmap.Canvas elindítja a BeginScene alkalmazást; Tiszta (TAlphaColorRec.White); DRect: = TRectF.Create (0, 0, GlobalBitmap.Width + 8, GlobalBitmap.Height + 8); DrawRect (DRect, 0, 0, AllCorners, StealthForm.ObjectPreviewImage.AbsoluteOpacitás); DRect: = TRectF.Create (0, 0, GlobalBitmap.Width, GlobalBitmap.Height); DrawBitmap (GlobalBitmap, DRect, TRectF.Create (2, 2, GlobalBitmap.Width + 2, GlobalBitmap.Height + 2), 1); EndScene; végén;
A probléma valójában az, ami - az Android verzióban a bal és a keret alatt a "megesett". A Win32 verzióban minden rendben van. A mellékelt képernyőképeken jól látható.
Olvastam a dokumentációt, google.

Mit csinálok rosszul? Vagy az orrfestés ismeretlen veszteségei a vásznon?

Ui A kép ugyanaz, a szín egy bizonyos területen nem megfelelően lett felvéve. Kampány is android viccek. De már foglalkozom ezzel.
P.P.S. Már kitalálta a színt - az android Kék és Piros alatt a képpontban, ki kell cserélnie. És a vászonról - nem működik semmilyen módon.
P

Most a 6. oldalon a felhasználók

Nincsenek felhasználók, akik ezt az oldalt látják

  • Minden tevékenység
  • legfontosabb
  • Általános kérdések
  • alkatrészek
  • Komponensfejlesztés
  • Hogyan adhatok hozzá egy TImage-ot a komponensemhez, és hadd változtassak a képen?