in
La comunità italiana dedicata a Sviluppatori e Architetti IT delle piattaforme Windows

problema runtime TCanvas(CLX)

Ultimo messaggio ricevuto il 27-05-2007 19.19 da zampi. 4 risposta(e).
Pagina 1 di 1 (5 elemento/i)
Ordina messaggi: Precedente Successivo
  • 27-05-2007 16.48

    • zampi
    • Utente Top 500
    • Registrato il 27-05-2007
    • Messaggi 3

    problema runtime TCanvas(CLX)

    Ciao a tutti!
    ho un problema runtime con il TCanvas della libreria CLX.

    Penso che il mio problema sia per gli esperti della libreria CLX e di QT...

    codice :

    //********************************
    procedure TScacchiera.Disegna() ;
    //********************************
    var
    Canvas : TCanvas ;
    begin
    Canvas := TCanvas.Create() ;

    //operazioni di disegno sul canvas.
    end;

    alla prima operazione di disegno lancia gia un eccezzione.
    (messaggio : Draw is not Allowed...)
    Dove sta il problema?
    Devo assegnare al Canvas.Handle l' handle di un QPainter ?
    (Penso di si altrimenti il Canvas non si disegna da solo...)
    Ho guardato la libreria QT e le sue varie funzioni , ma non riesco a creare
    un istanza di QPainterH. Sapete forse aiutarmi ?
    • Log
  • 27-05-2007 16.58 In risposta a

    • Alka
    • Utente Top 10
      Uomo
    • Registrato il 12-12-2003
    • Reggio Emilia
    • Messaggi 501

    Re: problema runtime TCanvas(CLX)

    Dove viene eseguito il codice che hai riportato nel messaggio? In che contesto? Il controllo *TScacchiera* (suppongo che si tratti di un controllo grafico) da quale classe deriva? Com'è implementato? Ciao!
    MARCO BREVEGLIERI
    (moderatore area "Delphi")
    http://www.marco.breveglieri.name

    Non hai la possibilità di scaricare Turbo Delphi? Te lo spedisco io!
    • Log
  • 27-05-2007 17.16 In risposta a

    • zampi
    • Utente Top 500
    • Registrato il 27-05-2007
    • Messaggi 3

    Re: problema runtime TCanvas(CLX)

    specifico meglio il mio problema :
    TScacchiera è un oggetto da me creato.
    deriva da TObject
    (non un controllo grafica)
    Disegna è un metodo di TScacchiera.


    Uso Borland Delphi 7
    e Windows Xp.
    L' applicazione è un applicazione CLX.
    • Log
  • 27-05-2007 17.25 In risposta a

    • Alka
    • Utente Top 10
      Uomo
    • Registrato il 12-12-2003
    • Reggio Emilia
    • Messaggi 501

    E' necessario un controllo visuale...

    zampi:
    specifico meglio il mio problema : TScacchiera è un oggetto da me creato. deriva da TObject (non un controllo grafica) Disegna è un metodo di TScacchiera. Uso Borland Delphi 7 e Windows Xp. L' applicazione è un applicazione CLX.

    Allora è presto detto: l'oggetto Canvas consente di disegnare all'interno di un "contesto", che può essere quello creato da un controllo visuale che necessità di essere visualizzato sullo schermo. Non puoi creare un oggetto TCanvas in questo modo: dove indirizzi poi le operazioni di disegno?

    Il tuo oggetto TScacchiera *DEVE* ereditare da TGraphicControl o da TWinControl (o il suo equivalente CLX, che non ricordo), a seconda delle funzionalità di cui si intende disporre, e ridefinire il metodo Paint utilizzando l'oggetto Canvas creato dal controllo per disegnare l'aspetto del controllo visuale stesso.

    Ciao! Smile
    MARCO BREVEGLIERI
    (moderatore area "Delphi")
    http://www.marco.breveglieri.name

    Non hai la possibilità di scaricare Turbo Delphi? Te lo spedisco io!
    • Log
  • 27-05-2007 19.19 In risposta a

    • zampi
    • Utente Top 500
    • Registrato il 27-05-2007
    • Messaggi 3

    Re: E' necessario un controllo visuale...

    Ok ho capito, grazie del consiglio !
    Tuttavia mi sorge un dubbio.
    Infatti quello che voglio effettuare è una scrittura
    in un Canvas senza corrispondente Controllo visuale, per poi chiamare :

    MainForm.Canvas.CopyRect(Rectangle, CanvasSorgente );

    Dove Rect specifica le cordinate di un rettangolo
    ,mentre CanvasSorgente è il canvas senza controllo visuale precedentemente creato.

    (cosi copio una parte del canvas e lo assegno
    al canvas della mia Form)

    Questo mi permette di effettuare piu operazioni
    su un canvas, e visualizzare i risultati sulla Form
    a tempo desiderato (chiamando CopyRect..)

    Ho visto che questa tecnica e' usata ad esempio
    in CArtellaInstallazioneDelphi\Demos\EarthPng
    (è un videogioco)
    Utilizzando pero le funzioni di Windows.pas
    che io non posso utilizzare.
    • Log
Pagina 1 di 1 (5 elemento/i)
Prelevato da http://www.devspy.com/forums/p/4526/5557.aspx
DevSpy.com 6.0 © 2001-2008 - Alcuni Diritti Riservati
Salvo diversa indicazione, tutti i contenuti sono pubblicati sotto licenza "Creative Commons Attribution-Share Alike 3.0"