ho provato a creare una nuova picture (picture2) nella stessa form
nella quale sto lavorando e inserire questo codice:


'----------------------------------------------------------------
Dim r As String
With Picture2
.Cls ' Cancella la picture
.AutoRedraw = True
'.Width = 400
'.Height = 400
'.ScaleWidth = Ly + margine
'.ScaleHeight = -(Ly + margine) 'cioè Tutta la lunghezza del circuito + una percentuale
.ScaleLeft = -.ScaleWidth / 2
.ScaleTop = -.ScaleHeight / 2
End With

Picture2.DrawWidth = 2 'disegna un punto nell'origine
Picture2.PSet (0, 0)
r = Trim("PACO")
Picture2.CurrentX = -TextWidth(r)
Picture2.CurrentY = 0
Picture2.Print r
'----------------------------------------------------------------


Questo funziona correttamente!!!

Forse sto arginando l'nghippo!!!
Sto usando le API (come suggerito da oregon in un altro post)
per poter ruotare un testo col metodo print in una picturebox e riporto il codice che ho usato:


'----------------------------------------------------------------
'[in un modulo]
Public Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Public Const LF_FACESIZE = 32
Public Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFacename As String * LF_FACESIZE
End Type


'[nella stessa form]
Dim Font As LOGFONT
Dim prevFont As Long, hFont As Long, ret As Long
Dim tipo_font As String

tipo_font = "Arial" & Chr$(0)


Picture1.ForeColor = QBColor(2) 'Colore del font

FontSize = Zm * 50 ' Altezzafont
Font.lfFacename = tipo_font 'Imposta il font

(*) Font.lfEscapement = 900 ' Rotazione (= 0-3600; es. 1800 = 180 gradi)

Font.lfHeight = (FontSize * -10) / Screen.TwipsPerPixelY

hFont = CreateFontIndirect(Font)
prevFont = SelectObject(Picture1.hDC, hFont)

Testo_quota = Trim("PACO")

(**) Picture1.CurrentX = Picture1.TextHeight(Testo_quota)
Picture1.CurrentY = -Picture1.TextWidth(Testo_quota) / 2

Picture1.Print Testo_quota

ret = SelectObject(Picture1.hDC, prevFont)
ret = DeleteObject(hFont)


'----------------------------------------------------------------

Il testo è ruotato di 90 gradi (riga *)
nella riga ** se io inserisco il codice come riportato allora il testo vien posizionato correttamente al centro del sistema di riferimento 0,0, ossia non dividendo per due la textheight.

Su CurrentY funziona mentre su CurrentX no! non riesco a fargli posizionare la mezzeria del testo nellorigine.
Non ancora capisco perche!!