Newsgroup: it.comp.lang.delphi
Titolo: Urgente copia rettangolo immgine

LA situazione è la seguente: creo una immagine (Timage), leggo da disco un
immagine (bitmap o jpeg), la ridemensiono in un rettangolo piccolo
0,0,100,100 e a questo punto vorrei copiare questo rettangolo su un'altra
immagine Timage per poi distruggere la prima e avere in ram solo
un'anteprima.
Come posso fare???
Io sto provando senza risultati a fare così:
anteprima.Picture.Bitmap.Canvas.Rectangle(orig_image.Picture.Bitmap.Canvas.c
opyrect(rec(0,0,100,100),orig_image.Canvas,rect(0,0,100,100));
che cosa sbaglio???
Per le bitmap mi copia un rettangolo dell'immagine originale e non di quella
ridimensionata, per le jpeg non fa nulla :((
Grazie in anticipo a chi potrà aiutarmi
Giò


    Via De Gasperi, 14 - 42019
    Scandiano (Reggio Emilia)


anteprima.Picture.Bitmap.Canvas.Draw(anteprima.Left,anteprima.Top,orig_image
.Picture.Graphic);
Ho provato cosě ma ilrisultato č lo stesso.....
non č che devo usare la funzione copyrect??? se sě come va usata???

 ha scritto nel messaggio
news:b47edf$cb7$1...@le.cs.unibo.it...

Per disegnare un'immagine all'interno di un'altra si utilizza il metodo
Draw.
Nella tua implementazione ci sono degli errori: i parametri X e Y da
passare al metodo si riferiscono alle coordinate dell'immagine contenuta
nel controllo visuale TImage, pertanto se vuoi passare il punto in alto
a sinistra come destinazione dell'immagine da tracciare, devi
specificare i valori (0,0). Nel tuo codice, hai passato "anteprima.Left"
e "anteprima.Top", che invece sono i pixel di distanza del controllo
TImage stesso dai bordi sinistro e superiore del form in cui č
contenuto.
L'elemento grafico tracciato nell'immagine di destinazione ha la stessa
dimensione dell'immagine di origine; se vuoi deformare la figura, usa il
metodo Canvas.StretchDraw().


Niente da fare non ci riesco....
Caro Marco se puoi darmi una mano ti posto il codice
                  orig_image:=timage.Create(panelanteprime);
                  orig_image.Parent:=panelanteprime;
                  orig_image.Height:=100;
                  orig_image.Width:=100;
                  orig_image.Picture.LoadFromFile(tmp2);
orig_image.Picture.Bitmap.Canvas.StretchDraw(rect(0,0,orig_image.Width,orig_
image.Height),orig_image.Picture.Graphic);
                  orig_image.Visible:=true;
                  //creo l'anteprima
                  anteprima:=timage.Create(panelanteprime);
                  anteprima.Parent:=panelanteprime;
                  anteprima.Height:=100;
                  anteprima.Width:=100;
                  anteprima.left:=(x1*ascissa)+(20*x1)+10;
                  anteprima.top:=(y1*ordinata)+(20*y1)+10;
                  anteprima.cursor:=crhandpoint;
                  anteprima.Picture.Bitmap.Height:=100;
                  anteprima.Picture.Bitmap.Width:=100;
                  anteprima.Picture.Bitmap.Canvas.CopyMode:=cmSrcCopy;
anteprima.Picture.Bitmap.Canvas.CopyRect(rect(anteprima.left,anteprima.top,a
nteprima.left+100,anteprima.top+100),anteprima.Canvas,rect(0,0,100,100));
                  anteprima.Proportional:=true;
                  anteprima.Visible:=true;
                  orig_image.Free;
DEvo creare delle anteprime di immagini motlo grosse che tengano pochissimo
in ram....

 ha scritto nel messaggio
news:b47nib$4r2$1...@le.cs.unibo.it...
