Autore Topic: Dimensioni drawing area  (Letto 4163 volte)

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Dimensioni drawing area
« il: 16 Febbraio 2012, 00:15:09 »
Salve, nel mio progetto ho inserito una drawing area di dimensioni 600x200. Quello che non capisco è perchè disegnando una linea da x300 y0 a x300 y200, la linea non raggiunge l'estremità della drawing area ed anche la posizione della x non corrisponde.
In pratica è come se disegnassi una linea che parte da circa x200 y0 fino a x200 y150.
Che corrispondenza ha la dimensione della drawing area con la posizione della linea disegnata?

Inoltre in che modo si posso disegnare gli archi? ho provato la funzione draw.circle ma non capisco il significato dei parametri start - end. Qualcuno sa come funzionano?
« Ultima modifica: 16 Febbraio 2012, 00:35:07 da nello79 »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.320
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #1 il: 16 Febbraio 2012, 05:31:03 »
Inoltre in che modo si posso disegnare gli archi? ho provato la funzione draw.circle ma non capisco il significato dei parametri start - end. Qualcuno sa come funzionano?

Immagina un cerchio avente come centro della sua circonferenza il punto di origine delle ascisse e delle ordinate.
I parametri "start angle" e "end angle" sono misurati in radianti. Un angolo pari a 0 pone il parametro sull'asse X positivo. Invece un angolo di radianti π/2.0 (cioè 90 gradi) porrà il parametro sull'asse Y positivo......

...ti faccio un esempio esplicativo, non con la DrawingArea, disegnando all'interno di una Picture vuota (appositamente realizzata nella cartella Dati) da 304 x 304 pixel:
Codice: [Seleziona]
Public Sub Button1_Click()

 Dim p As Picture
 Dim a As Integer

  p = Picture.Load("mia_immagine_vuota.png")
  
 For a = 1 To 360
 
  With Draw
    .Begin(p)
' viene disegnato piano-piano un arco iniziando dall'asse X nel 1° quadrante,
' che va incrementando in senso antiorario, ed alla fine si chiude a formare un cerchio:
    .Arc(100, 100, 100, 100, Rad(0), Rad(a))
  End With

  PictureBox1.Picture = p

  Wait 0.1
Next

End

...prova (con la tua drawingArea) a vedere quello che succede  :coder: , e capirai quello che volevi capire.



Prova anche questa soluzione più specifica per creare un semicerchio:
Codice: [Seleziona]
Public Sub Button1_Click()

Dim p As Picture
Dim a As Integer

  p = Picture.Load("mia_immagine_vuota.png")
  
  With Draw
    .Begin(p)
' viene disegnato un semicerchio:
    .Circle(100, 100, 100, Rad(0), Rad(180))
  End With

  PictureBox1.Picture = p

End
« Ultima modifica: 16 Febbraio 2012, 23:03:13 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #2 il: 16 Febbraio 2012, 19:44:15 »
Citazione
Salve, nel mio progetto ho inserito una drawing area di dimensioni 600x200. Quello che non capisco è perchè disegnando una linea da x300 y0 a x300 y200, la linea non raggiunge l'estremità della drawing area ed anche la posizione della x non corrisponde.
In pratica è come se disegnassi una linea che parte da circa x200 y0 fino a x200 y150.
Che corrispondenza ha la dimensione della drawing area con la posizione della linea disegnata?

ricontrolla il tuo codice , se dai un punto con x 300 y 0 il punto sulla drawing area sarà l' angolo destro superiore , controlla inoltre se hai posizionato la drawing in un contenitore che la ridimensiona , percui le sue dimensioni non sono quelle che ti apetti tu.

in linea di massima se aggiungi una drawingarea su un form senza variare alcun parametro deve funzionare correttamente .



Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #3 il: 16 Febbraio 2012, 21:52:54 »
Niente non riesco proprio a capire... Allora in un form ho inserito una drawArea di dimensioni 400*200. Ho inserito questo codice:

Codice: [Seleziona]
PUBLIC SUB Form_Open()
Draw.Begin(DrawingArea1)
Draw.LineWidth = 1
Draw.Line(100, 0, 100, 200)
DrawingArea1.Refresh
END
La linea me la disegna da circa x80 y0 fino a x80 y130 all'incirca.. ma dove sbaglio? Di quale contenitore parli?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #4 il: 16 Febbraio 2012, 22:01:19 »
allega i sorgenti della tua prova cosi vediamo di venirne a capo :) ,

il codice è corretto , ed in effetti a me da il risultato qui sotto che è quello che ci si deve aspettare

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #5 il: 16 Febbraio 2012, 22:03:21 »
ps togli il DrawingArea1.Refresh  e meTti draw.end

e nelle proprietà della drawing metti a true la proprieta chached
« Ultima modifica: 16 Febbraio 2012, 22:05:56 da fsurfing »

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #6 il: 16 Febbraio 2012, 22:10:51 »
Ma per la miseria ma allora cosa può essere? Il codice che ho messo è quello che ho già scritto prima. Ho creato un progetto nuovo con solo quel codice per capire come funziona. Ho corretto come mi hai detto ma il risultato non cambia, guarda quì ho solo cambiato lo sfondo e il colore delle linee.

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #7 il: 16 Febbraio 2012, 22:25:47 »
Ma potrà essere la versione di gambas che uso che ha qualche bug? io ho la 2.21 potrebbe essere questo il problema?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #8 il: 16 Febbraio 2012, 22:52:02 »
io ho la 2.22  dai repo di mint ( e quindi ubuntu 11.10)
tu l a2.21 l' hai scaricata dai repo  o compilata?

mi servivano  i sorgenti per vedere i file frm che creava la tua versione :)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #9 il: 16 Febbraio 2012, 22:54:05 »
per curiosità apri i mie sorgenti ed eseguili , così vediamo subito se è la tua versione di gambas

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #10 il: 16 Febbraio 2012, 23:14:32 »
allora la tua funziona correttamente però ho notato che è la dimensione della drawingarea che è cambiata. La tua è visualizzata più piccola rispetto alla mia pur rimanendo la dimensione 400*200.
Comunque ora sto compilando gambas3 chissà che non migliorano le cose. Comunque ecco i sorgenti. L'avevo installata dai repo

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #11 il: 17 Febbraio 2012, 08:35:03 »
il problema è dovuto alle librerie che utilizzavi, con lke gtk si verifica il tuo problema, se invece il progetto lo realizzi con le qt va tutto benissimo

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #12 il: 17 Febbraio 2012, 20:28:18 »
Ok ho provato a creare un nuovo progetto selezionando Applicazione Grafica QT nel tipo di progetto e funziona correttamente. Ma il progetto completo l'ho creato selezionando solo Applicazione Grafica ora come faccio a convertirlo? Devo per forza crearne uno nuovo e copiare il vecchio?

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.320
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #13 il: 17 Febbraio 2012, 21:17:01 »
ora come faccio a convertirlo? Devo per forza crearne uno nuovo e copiare il vecchio?

Carica il vecchio progetto originale poi:
1) clicca in alto a sinistra su: "Progetto";
2) poi scegli "Proprietà";
3) nella finestra di dialogo che appare, clicca su "Componenti";
4) disattiva gb.gtk e gb.gui;
5) attiva (metti la vergatura  :check: su) "gb.qt4" e "gb.qt4.ext" .
« Ultima modifica: 18 Febbraio 2012, 13:30:12 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Dimensioni drawing area
« Risposta #14 il: 18 Febbraio 2012, 00:02:57 »
Ma io non ho attivo gb.gtk e gb.gui. Ho attivo solo: gb, gb.form, gb.qt, gb.qt.ext ma le gb.qt4 e gb.qt4.ext non ci sono proprio.  :mad: