4. kérdés 076 ... delphi atypical! Jpeg-képet kell megjelenítenem egy komp ...

Kedves Kedves kedvelők Delphi!

Meg kell jeleníteni egy JPEG képet egy TImage típusú komponensen keresztül (egy egyszerű kézi vektorosító háttereként). Elvileg minden működik, Mr. Oja hirtelen szembesülnek azzal a ténnyel, hogy nem tudok az abszolút nagysága a JPEG-kép centiméterben (kivont gyomrában TImage állásfoglalás „pixelek valami” vagy abszolút pixel méretű, ugyanakkor nem működik).

Kérem, mondja meg, hogyan oldja meg ezt a problémát.

Hálával mindenkinek, aki válaszolni fog,
Vitali

Mini-kérdés fórum

Ehhez tudnia kell a képernyőfelbontást (pixel / hüvelyk) függőlegesen és vízszintesen az aktuális monitorhoz. Ez a GetDeviceCaps () függvény használatával történik.

A Delphi és a Turbo Pascal laborokat és oktatóanyagokat készítek. A BEER számára! Írj személyes, és lehetőleg ICQ-ban. És még jobb - hívja a Skype-t!

Megpróbáltam megtenni a min @ y ™ ajánlása szerint. Azonban a következő kódtöredék nulla felbontást eredményez a monitor számára függőlegesen és vízszintesen.
Ugyanez történik, ha engedélyt kér az asztalról.
Valami rosszat csinálok?

Az "olvasás bizonyítéka" kullancs univerzális gonosz.

A Vadim K tanácsára ez megváltoztatta a kódot
és ennek megfelelően
A nullák még mindig visszatértek. A hurokban megbizonyosodtam róla, hogy mindkét hozzárendelési operátor ténylegesen végrehajtásra kerül. Talán pontosan az eszköz "fogantyúja" vagyok helytelenül helyettesített?

Emlékeztünk arra, hogy megpróbálhatjuk a Monitorokat [i] .PixelsPerlnch
mint látható a név - єto száma pontok hüvelyk. Emlékezve arra, hogy a hüvelyk 25,4 mm-es, könnyedén megy a metrikus rendszerbe.

Az "olvasás bizonyítéka" kullancs univerzális gonosz.

A Vadim K tanácsára ez megváltoztatta a kódot
(a PixelsPerlnch tulajdonság a TScreen osztályban van meghatározva, és nem szerepel a TMonitor osztályban). E korrekció szem előtt tartva működik, de a kép abszolút mérete helytelenül van meghatározva.

Pontosabban, így kapok a képernyőfelbontás (96), és a JPEG fájl tulajdonságaiban a felbontás 300 pixel / hüvelyk (ugyanaz a PhotoShop).

miért jönnek fel az emberek a kérdésük "egyszerűsítésével"?
Nos, nem kell ezt tennie. És nem kapsz "rossz választ".

Mondjuk csak, ha egy kép megjelenik, akkor pixelként jeleníthető meg egy pixelre, vagy figyelembe véve a fájlon belüli felbontást. a TJPEGImage osztály egy dpi tulajdonsággal rendelkezik, amely megmutatja a régóta várt 300-at.


A bmp fájlnak nincs olyan koncepciója, mint a dpi, és az elveszett, ha betöltötte a jpg fájlt. (pontosabban fel lehet használni a kép méretarányát a rendszerindításkor).

Az "olvasás bizonyítéka" kullancs univerzális gonosz.

Vadim K írta: Nos, miért jönnek fel az emberek a kérdésük "egyszerűsítésével"?

A kérdés eredeti változatában megkérdeztem, hogyan lehet a kép abszolút mérete bármely egységben vagy képpontban egy abszolút egységhez. Valószínűleg valami hibásan fogalmaztam meg, de sajnos még mindig nem értem, mi az.

Módosult a kód, mint ez
Kiderült, hogy az Image.Picture.Graphichez rendelt TJPEGImage osztály objektuma nem rendelkezik a dpi tulajdonsággal, ami talán a Delphi-7 sajátosságai miatt van, amelyeket használok.

Lehetséges-e bármilyen egyéb paraméter befogadása és alapja ennek kiszámolása?

A képernyőn rajzolt képnek nincs belső mérete. Megpróbálhatja megszámolni, ha ismeri a képpontok méretét és a monitor beállításait.

Egy fájlba mentett képhez ilyen paraméter lehet. De egyes esetekben ez értelmetlen. Miért? Nos, például egy beolvasott képet, akkor megértheted, itt a dpi-nek van értelme. De az ablakból kilátást nyújtó fényképnek nincs többé értelme, hiszen lehetetlen levélváltás (gondolkodni egy kicsit, meg fogja érteni, miért). De a földi Földről készült kép esetében már van értelme.

hResol: = (KépPicture.Graphic, mint TJPEGImage) .dpi;

Óvatosan olvassa el a korábbi bejegyzésemet, amely megmutatja, miért nem fog működni.

Az "olvasás bizonyítéka" kullancs univerzális gonosz.

Ha jól értem a gondolat Vadim K. hozzárendelését követően JPEG-képek Image.Picture.Graphic ha bekövetkezik az átalakulás, a kezdeti paramétereket, majd elvesztette (nem tárolja a gyomrában egy példányának TImage alkatrész).

Azonban, mielőtt ez a "fejlett" probléma, én csak nem értem. Itt van a módosított kód, amely ebből a szempontból helyes.
Pontosan megbotlik, hol van az előző kód
Mindkét esetben a fordítási szakaszban csak azt mondtam, hogy a dpi tulajdonság nincs definiálva.

A dpi tulajdonságra vonatkozóan nincs a Delphi az ujjhegyen. talán tévedtem - nem emlékszem mindennek. De nehéz-e kattintani a ponton a jpeg után és látni a tulajdonságok listáját?


Ne írj ilyeneket. Ez egy memória szivárgás. használja a hozzárendelést

Az "olvasás bizonyítéka" kullancs univerzális gonosz.