Newsgroup: it.comp.programmare.win32
Titolo: BCB4

Vorrei realizzare una funzione per disegnare sul Canvas un rettanolo pixel
per pixel (in modo da poterli memorizzare) , come intorno di un  segmento
dato da due punti P1 iniziale e P2 finale.
Qualcuno ha del codice che mi possa aiutare?
Grazie mille.

Qualcuno ha del codice che mi possa aiutare?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     TCanvas *MyCanvas = Form1->Canvas ;
     for ( int x = 10 ; x <= 50 ; x++ )
         for ( int y = 10 ; y <= 50 ; y++ )
             MyCanvas->Pixels[x][y] = 0xF0F0F0 ;
}
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------------
"There is nothing better for understanding a kangaroo
 than seeing it jump." [D.Grune, C.J.H. Jacobs]
-----------------------------------------------------

 ha scritto nel messaggio
news:2lutvs40usgef2jbu...@4ax.com...

Questo mi va bene per un rettangolo orizzontale o verticale, ma se volessi
disegnarne uno con una inclinazione qualsiasi?
Grazie.

 ha scritto nel messaggio
news:S1GL5.64505$3K3.1...@news.infostrada.it...


}
Scusa, ma dati due punti non c'č piů di un rettangolo che li ha come estremi ?
Non capisco...
Paolo
PS Non ho provato il tuo codice, quindi la mia č una dissertazione puramente
astratta, priva di riscontri pratici. Se ho detto una sciocchezza sei libero
di insultarmi come ti pare :-)
-- 
E-Mail   : 
paolo.be...@tin.it
Sito web : 
http://web.tiscalinet.it/paolo_bernardi
PGP Key  : 
http://web.tiscalinet.it/paolo_bernardi/pbkey.asc

 ha scritto nel messaggio
news:slrn8vvq30...@localhost.localdomain...


 li ha come estremi ?
Se i due punti identificano due vertici opposti, no. Pensaci: puoi
pensare a un rettangolo inclinato come se fosse orizzontale in un
sistema di riferimento inclinato al contrario (frase contorta, con un
disegno si capirebbe meglio :-)).
---
Bye! Lorenzo Lutti
http://www.geocities.com/SiliconValley/Peaks/6258/

 rettangolo, mentre a me serve farlo pieno.
Puoi sempre usare ExtFloodFill(), che pero` non e` esattamente un
fulmine (anche se penso che praticamente tutte le schede video moderne
abbiano il supporto via hardware del flood fill).


 sistema di riferimento inclinato al contrario (frase contorta, con un
Scusa se mi permetto, ma Paolo Bernardi ha ragione: se disegni su ognuno
dei due
punti 2 rette ortogonali in un caso parallele agli assi coordinati, e
nell'altro
formanti con essi (gli assi coord.) 45 gradi ne hai ottenuti 2. Quindi
se non erro
ne esistono n dove n e' l'angolo compreso tra un lato e un asse (x o y).
Cio' che tu dici e' che per ogni rettangolo inclinato esiste un sistema
di riferimento in cui e' dritto.
Ciao.
Giovanni Amici

Ciao. Qual buon Vento?

 asse (x o y).
Ripensandoci hai ragione. Stavo pensando ai quadrati, non ai rettangoli.
:)
---
Bye! Lorenzo Lutti
http://www.geocities.com/cirovampiro/

disegnarne uno con una inclinazione qualsiasi?
void RotateCoords( double *x, double *y, double ang )
{
     double x1 = *x * cos( ang ) - *y * sin( ang ) ;
     double y1 = *y * cos( ang ) + *x * sin( ang ) ;
     *x = x1 ;
     *y = y1 ;
}
void DrawRotatedRectangle( double cx,    // coord x centrale
                           double cy,    // coord y centrale
                           double dx,    // dimensione orizzontale
                           double dy,    // dimensione verticale
                           double angle, // angolo di rotazione
                           TCanvas *C    // canvas per disegno
                         )
{
     double x[4] = { - dx / 2, + dx / 2, + dx / 2, - dx / 2 } ;
     double y[4] = { - dy / 2, - dy / 2, + dy / 2, + dy / 2 } ;
     for ( int i = 0 ; i < 4 ; i++ )
         RotateCoords( &x[i], &y[i], angle ) ;
     C->MoveTo( cx + x[0], cy + y[0] ) ;
     C->LineTo( cx + x[1], cy + y[1] ) ;
     C->LineTo( cx + x[2], cy + y[2] ) ;
     C->LineTo( cx + x[3], cy + y[3] ) ;
     C->LineTo( cx + x[0], cy + y[0] ) ;
     C->Brush->Color = clRed ;
     C->FloodFill( cx, cy, clBlack, fsBorder) ;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     DrawRotatedRectangle( ClientWidth  / 2,
                           ClientHeight / 2,
                           100,
                           50,
                           3.1415927 / 5,
                           Form1->Canvas ) ;
