Ciao a tutti! Eccomi tornato, mi godo questo po' di libertà prima di assentarmi nuovamente....
Allora come ormai avrete imparato, ad ogni mio ritorno mi tocca ricordare quanto imparato nelle volte precedenti e cercare di inserire qualcosa di nuovo.
il mio problema è questo, guardando il codice del programma di esempio "painting" mi è venuta voglia di imparare a scrivere un testo...ma credo di non avre afferrato bene il concetto...mi date una mano?
ho una form co un pulsate ed una drawing area, vorrei, al click sul pulsante che apparisse la scritta "Ciao" sulla drawing area in una determinata posizione.
ecco le due riga di codice che ho scritto:
Public Sub ToolButton1_Click()
Dim x, y As Integer
x = 20
y = 100
Paint.Font.Name = "Sans"
Paint.Font.Size = 90
Paint.Font.Bold = True
Paint.MoveTo(x, y)
Paint.Text("Ciao")
Paint.Fill
DrawingArea1.Refresh
End
Perdonatemi se il codice conterrà molte sciocchezzuole, ma è da tanto che non uso il gambero.... :evil:
Public Sub ToolButton1_Click()
DrawingArea1.Refresh()
End
Public Sub DrawingArea1_Draw()
Dim x, y As Integer
x = 20
y = 100
Paint.Begin(DrawingArea1)
Paint.Font.Name = "Sans"
Paint.Font.Size = 90
Paint.Font.Bold = True
Paint.Text("Ciao",x,y)
Paint.Fill()
Paint.End()
End
Ho scritto tutto in maniera molto semplice ma non va.
Il mio codice:
Public Sub ToolButton1_Click()
DrawingArea1.Refresh
End
Public Sub DrawingArea1_Draw()
Dim x, y As Integer
x = 10
y = 10
Paint.Begin(DrawingArea1)
Paint.Text("Ciao")
Paint.Color(2)
Paint.MoveTo(x, y)
Paint.Fill
Paint.End
End
L'errore:
warning: unable to load Qt translation: it_IT.utf8
Curiosità: Ma in questo modo utilizzo la libreria cairo e quindi la grafica vettoriale?
il metodo paint è diverso dal draw
il codice che hai postato è relativo al draw
per il painting devi prma definire un brusch
Public Sub ToolButton1_Click()
Dim x, y As Integer
x = 10
y = 20
Paint.Begin(DrawingArea1)
Paint.Brush = Paint.Color(Color.Black)
Paint.Text("Ciao", x, y)
Paint.fill
Paint.Rectangle(x + 100, y + 50, 50, 50)
Paint.Fill
Paint.Rectangle(x + 200, y + 50, 50, 50)
Paint.stroke
Paint.Brush = Paint.Color(2143514591)
Paint.Rectangle(x + 120, y + 75, 50, 50)
Paint.Fill
Paint.End
End
ok, ho fatto delle correzioni ed ho aggiunto un fontchooser nella form
Public Sub ToolButton1_Click()
DrawingArea1.Refresh
End
Public Sub DrawingArea1_Draw()
Dim x, y As Integer
x = 150
y = 150
Paint.Begin(DrawingArea1)
Paint.Brush = Paint.Color(Color.DarkBlue)
Paint.Text("Hello!", x, y)
Paint.Font.Name = FontChooser1.SelectedFont
Paint.Fill
Paint.End
End
Però non mi lascia utilizzare il font scelto dal fontchooser...
inoltre all'avvio della form mi scrive già il testo, ma io vorrei che il testo sia scritto al click del mouse e non all'avvio...
la differenza tra draw e paint é soltanto quella del brush oppure paint è vettoriale (usando la libreria cairo) e l'altro no?
il nome lo devi idicare prima dell' istruzione testo
per disegnare solo al clic del mouse devi inserire il codice di disegno nella funzione del pulsente e non in "Public Sub DrawingArea1_Draw()"
le diversita tra paint e draw sono molte.. una per tutte la possibilità di gestire le trasparenze e i file svg , non saprei dirti se è vettoriale ...
ho una serie di errori..
warning: unable to load Qt translation: it_IT.utf8
QPainter::begin: Widget painting can only begin as a result of a paintEvent
QPainter::setRenderHint: Painter must be active to set rendering hints
QPainter::setRenderHint: Painter must be active to set rendering hints
QPainter::setRenderHint: Painter must be active to set rendering hints
QPainter::pen: Painter not active
QPainter::setPen: Painter not active
QPainter::setBrush: Painter not active
QPainter::font: Painter not active
QPainter::setFont: Painter not active
QPainter::setBrush: Painter not active
QPainter::pen: Painter not active
QPainter::setPen: Painter not active
QPainter::fontMetrics: Painter not active
QPainter::font: Painter not active
QPainter::brush: Painter not active
QPainter::fillPath: Painter not active
ecco il codice corretto inserendo anche un colorchooser
Public Sub ToolButton1_Click()
Dim x, y As Integer
x = 150
y = 150
Paint.Begin(DrawingArea1)
Paint.Font.Name = FontChooser1.SelectedFont
Paint.Brush = Paint.Color(Color.Blue)
Paint.Text("Hello!", x, y)
Paint.Fill
Paint.End
DrawingArea1.Refresh
End
Ho modificato ancora ma non va ecco tutto il progetto:
Public a As Integer
Public b As Integer
Public Sub _new()
End
Public Sub Form_Open()
Me.Center
End
Public Sub ToolButton1_Click()
Paint.Begin(DrawingArea1)
Paint.Brush = Paint.Color(ColorChooser1.SelectedColor)
Paint.Font.Name = FontChooser1.SelectedFont
Paint.Text("Hello!", a, b)
Paint.Fill
Paint.End
End
Public Sub DrawingArea1_MouseMove()
a = Mouse.X
b = Mouse.Y
ValueBox1.Value = a
ValueBox2.Value = b
End
La form ha un fontchooser per la scelta del font ed un colorchooser per il colore.. :hatecomputer: