PDA

Visualizza la versione completa : [DELPHI] Copie multiple di forme geometriche


carmelo81
13-05-2012, 20:30
Ciao a tutti, ho questa domanda da porvi:
Posto che abbia un'area di lavoro di 700*500 px in cui devo inserire un tot di rettangoli, opportunamente dimensionati, tali da riempire quest'area di lavoro, come posso realizzare, con un semplice evento (ad es tramite button), una copia multipla di questi rettangoli?
Spero sia chiaro...
Ciao e grazie per l'aiuto
Carmelo

alka
14-05-2012, 09:39
Originariamente inviato da carmelo81
Spero sia chiaro...


Direi proprio di no. Come sono fatti questi rettangoli? Sono disegnati "a mano" o sono ottenuti tramite qualche controllo (ad esempio, un TShape)?

Che codice hai scritto sino a ora?

carmelo81
14-05-2012, 12:19
uhm....
Dunque vediamo se riesco a spiegarmi meglio.
Si tratta di una parete che devo "mattonellare".
Assegno in un edit la lunghezza della parete (ad es. 10), in un altro edit l'altezza della parete (ad es. 3), in un altro ancora il numero degli elementi in lunghezza (ad es 20) ed ancora in un quarto edit il numero degli elementi in altezza (ad es 10)
Le dimensioni delle mattonelle saranno quindi, 10/20=0,5 x 10/3=0,3.
A questo punto mi chiedo come far disegnare automaticamente questi rettangoli di dimensioni 0,5*0,3, uno accanto all'altro, lungo x e lungo y.
Spero sia pių chiaro adesso...
Non ho ancora scritto del codice, sono ancora in fase embrionale, mi serviva uno spunto per poter partire. :)
Ciao e grazie ancora
Carmelo

alka
14-05-2012, 12:46
Originariamente inviato da carmelo81
A questo punto mi chiedo come far disegnare automaticamente questi rettangoli di dimensioni 0,5*0,3, uno accanto all'altro, lungo x e lungo y.
Spero sia pių chiaro adesso...

Disegnare "automaticamente" non č possibile: tutt'al pių, dovrai scrivere il codice necessario per tracciare i rettangoli nelle posizioni corrette, facendo un ciclo o in generale sfruttando i dati di partenza che ti sono stati forniti.

Puoi partire ad esempio utilizzando il controllo PaintBox (http://docwiki.embarcadero.com/RADStudio/en/Paint_Boxes) e studiando la documentazione dell'oggetto Canvas che possiede i metodi per disegnare elementi grafici (qui (http://docwiki.embarcadero.com/RADStudio/XE2/en/Overview_of_Graphics_Programming) un'introduzione).

Ciao! :ciauz:

Nettuno95
14-05-2012, 13:20
Originariamente inviato da carmelo81
Posto che abbia un'area di lavoro di 700*500 px in cui devo inserire un tot di rettangoli, opportunamente dimensionati, tali da riempire quest'area di lavoro, come posso realizzare, con un semplice evento (ad es tramite button), una copia multipla di questi rettangoli?
Carmelo

Detto cosė con un semplice doppio ciclo for riesci a fare quello che vuoi, ma mancano informazioni del tipo: Che tipo di fondo usi ? la form, un pannello, un PaintBox ??
che tipo di "mattonelle" vuoi creare Immagini ? shape? ect ect

per fare un semplice esempio


// coordinate di partenza
nTop := 10;
nLeft := 10;
// dimensioni della mattonella calcolate
nW := 50;
nH := 30;
// facciamo un esempio con un componente shape su form
for x := 1 to <mattonelle orizzontali> do
begin
for y := 1 to <mattonelle verticali> do
begin
oMattone := Tshape.Create(Self); // creo la mattonella
oMattone.Parent := Self; // assegno il papā
oMattone.Top := nTop; // dimensioni
oMattone.Left := nLeft;
oMattone.Width := nW;
oMattone.Height := nH;
nTop := nTop + nH; // aumento il top
end;
nTop := 10; // reset del top
nLeft := nLeft + nW; // aumento left
end;



PS: Codice non testato, e non ottimizzato scritto dentro il forum per semplice esempio.
N95

Loading