Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Delphi] Copie multiple forme geometriche

    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
    Dubitare di se stesso è il primo segno dell'intelligenza (Ugo Ojetti)

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Re: [Delphi] Copie multiple forme geometriche

    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?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    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
    Dubitare di se stesso è il primo segno dell'intelligenza (Ugo Ojetti)

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    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 e studiando la documentazione dell'oggetto Canvas che possiede i metodi per disegnare elementi grafici (qui un'introduzione).

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5

    Re: [Delphi] Copie multiple forme geometriche

    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
    codice:
      // 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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.