Crtanje po Canvasu TImag-a(TJVImage-a).

Crtanje po Canvasu TImag-a(TJVImage-a).

offline
  • Pridružio: 26 Feb 2004
  • Poruke: 55
  • Gde živiš: Banja Luka

Kada ucitam sliku koja nije *.bmp, nijedan uobicajen metod crtanja najobicnije bitmape ne pomaze(od Image1.Canvas.Draw do npr.
if Krug.Canvas.Pixels[I, I1] = clRed then
Image1.Canvas.Pixels[X1 + I, Y1 + I1] := clRed;) javlja gresku
"Can only modify an image if it contains a bitmap."
Da li postoji nacin da se nacrta nesto na jpeg-u ili nekom drugom ucitanom formatu koji nije bitmap?
Pada mi na pamet manipulacija pixelima u memoriji ali za to nemam potrebno znanje.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24130
  • Gde živiš: Wien

Ako vec imas instaliran JEDI (pretpostavljam da imas JCL i JVCL), onda u JclGraphics (JCL) unitu imas funkciju JPegToBitmap.

Ne mozes da crtas direktno po kompresovanim slikama.
Mora prvo da se kovertuje u bitmap.
Problem je sto ces da imas gubitke u kvalitetu kada je posle opet konvertujes u JPG.



offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Fora je u tome da kreiras prazan bitmap za image komponentu, zatim u neki drugi graphic objekat (recimo drugi image) ucitas svoju jpeg sliku (ili neki drugi format) i onda taj drugi image preko canvas-a nacrtas na prvi.

offline
  • Pridružio: 26 Feb 2004
  • Poruke: 55
  • Gde živiš: Banja Luka

Napisano: 30 Jun 2010 21:34

(razmisljanja) Zar nije cudno da ne mogu crtati po canvasu (JV)Image-a, jer on pixel by pixel interpretira(valjda) sliku(platno). Meni i ne treba da crtam po samoj slici vec da se na zadatim koordinatama za svaku sliku posebno iscrtam taj krug.

Bobby ovo tvoje nisam probavao jer su glomazni jpezi oko 5 MB, kada ga Irfanom pretvorim u bitmapu dobijem 120 megi. Hvala, a ako kojim slucajem uspijem da nacrtam nesto na kompresovanu sliku javljam.
Srkijevo sam probao i na probnom fazonu ide.
Image1.Canvas.Draw(0, 0, Image2.Picture.Graphic);
I onda se moze crtati po Imiage1 ladno.
Kasnije cu postaviti i pitanje za antialiasing posto vidim da posjedujete znanje.

Dopuna: 30 Jun 2010 23:22

A normalno javlja se i prvi problem.
Ako Image2 nije visible onda crta sliku samo na vidljivom dijelu canvasa Imagea1.
Cudno rjesenje je da Image2 mora biti Visible.

Ko je trenutno na forumu
 

Ukupno su 605 korisnika na forumu :: 30 registrovanih, 2 sakrivenih i 573 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1567 - dana 15 Jul 2016 19:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _commandos_, _Rade, A.R.Chafee.Jr., Apok, Atomski čoban, Filodendron, ivance95, jovan.simovic97, Kubovac, liman2, ltcolonel, Marko Milakov, milos.cbr, Mr. Majevica, mutic2002, Rakenica, repac2, RJ, rodoljub, sabaton26, Shomy, shone34, theNedjeljko, VJ, Voja1978, XBMC, yrraf, yufighter, zexoni, Zmaj 99