Newsgroup: it.comp.lang.visual-basic
Titolo: scrivere testo in verticale

non ci riesco!
ho provato l'esempio che sta sul sito comune ma a volte mi impalla il
prog...va prorpio in crash senzaa cosi poter effettuare alcun debug, e solo
a volte, impedendomi di capire così cos'è che genera l'errore.
ho cercato altri esempi in giro per internet ma non ho trovato niente di
utile...
solo per il .net        (il prog è in vb6+sp4)
sapete se c'è un modo semplice semplice per fare ciò??! magari un bell'ocx
free!! (anche se mi sembra esagerato!)
vabbè cmq...datemi una dritta!
cià!

Scrivere testo verticale dove??
vorresti un OCX che per esempio sia una Label che ti peermetta di scrivere
in verticale??

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 bell'ocx free!! (anche se mi sembra esagerato!)
(Sgretolare una montagna per riempire una clessidra: Ovvero i consigli
parsimoniosi del dott.Gigio)
Ok, prendi una bella picture, ci stampi sopra con print, poi usi l'api
(vecchi post) per ruotare una immagine e il gioco e' fatto !
Clikkete qui clikkete la' nella prox puntata vedremo come usare il peer2peer
al posto del vecchio DiskCopy del dos.
Stay tuned and buy more ram !
-- 
<Gigio2K>
--- 
http://www.g2kweb.it/gigio2k
 ---
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 a volte, impedendomi di capire così cos'è che genera l'errore.
Sapere qual è il programma che hai provato... ;)
Comunque questa è una FAQ, e in giro per internet ci sono tonnellate di post
per questo problema, anche nei vecchi post di questo NG.
Anche in MSDN c'è scritto (ma pensa) e credo ci sia qualcosa di mio anche
sul SC.
Prova a cercare SetTextMetrics()
Ciao
--
Math Parser : 
http://www.neodatatype.net
FlowChart   : 
http://www.neodatatype.net/dump/flowchart/dir.asp
Sito Comune : 
http://www.it-lang-vb.net

 ha scritto nel messaggio
news:2i1kk9F...@uni-berlin.de...


 (vecchi post) per ruotare una immagine e il gioco e' fatto !
:-)   LOL ! !
CCCP++Mario
P.S. .... uhm, mi viene il futile dubbio che non fosse una battuta (sono
stanco !)
Non so chi avesse postato la domanda iniziale, ma ovviamente questa tecnica
di ruotare il rettangolo prestampato, forse non produce la scritta tipo
giapponese che voleva il poster iniziale.
Infatti bisognerebbe partizionare il riquadro di stampa del testo, isolando
ciascun singolo carattere, e ruotare poi soltanto il baricentro di questa
celletta, quindi il baricentro ruota, ma i vertici di ciascun rettangolino
che delimita un carattere devono muoversi di archi di cerchio ampi 90°
parallelamente a sé stessi.
(scusa di nuovo l'idiozia se non ho saputo distinguere se era una battuta o
meno)
P.P.S.
a quel punto conviene stampare un singolo carattere alla volta controllando
il punto di inserimento avanzando di una riga ogni carattere ma non la
colonna


 giapponese che voleva il poster iniziale.
Questa č una tua deduzione :)
Nel post iniziale non c'č mica scritto che tipo di verticalizzazione vuole.
Nel caso di "testo alla giapponese" basta spostare in giů e far tornare
indierto il cursore sulla picturebox prima di fare una Print del carattere:
č un loop da 2 minuti.


 Prova a cercare SetTextMetrics()
google mi ha dato 1 solo risultato!!!
...e 5 sui gruppi ma c'entrano ben poco con il fatto di scrivere testo
in verticale in un form,picturebox o qualsiasi altro oggetto
cmq devo scrivere il testo  verticale non in stile "giapponese" (troppo
facile se no!;-)) ma proprio ruotato...
il sorgente che ho preso dal sc è di "steve McMahor" fornito da Luca
Avanzini
e si chiama:    SIDELOGO (14-02-1999)
ho provato anche RotText di Fabio Guerazzi ma questo non parte proprio, mi
da una un bel po di errori
e non mi riconosce le funzioni mid e chr...bah!!
(anche Vprint, che è solo per stampe su carta)
ok grazie a tutti....
prenderò la strada indicatami da gigio...se vi viene in mente qualcosa nel
frattempo :-)
ciao!


 ha scritto nel messaggio
news:2i1kk9F...@uni-berlin.de...

ok trovata la soluzione qui:
http://www.riolo.org/Archivio/FAQ/FAQ00059.HTM
era proprio con textmetrics come diceva zanna
(ma setTextMetrics non esiste??)
ciao!

 č un loop da 2 minuti.
e vabbč, per una sola colonna si, č triviale.
Ma allineare piů colonne, specialmente coi font proporzionali, diventa giŕ
un pochino piů complicato (e anche mandare a capo, ossia tornare su, ad
un'altezza prefissata .... bisogna giocare un po' col'altezza dei font, e un
po' č na rogna)
Ciao
CCCP++Mario


 e non mi riconosce le funzioni mid e chr...bah!!
Cosa dire... funziona.
A parte le variabili in RotateText che anzichč integer dovrebbero essere
Long sennņ rischiano l'Overflow.
Che non ti riconosca mid e chr non un č problema del progetto, non del
progetto, e sinceramente mi sembra molto strano su questo tipo di progetti.
Controlla che i riferimenti di default ci siano, questo progetto ha dentro
anche un riferimento a DAO che non serve a niente, prova a rimuoverlo.
Ciao
--
Math Parser : 
http://www.neodatatype.net
FlowChart   : 
http://www.neodatatype.net/downloads/dir.asp
Sito Comune : 
http://www.it-lang-vb.net

 anche un riferimento a DAO che non serve a niente, prova a rimuoverlo.
sinceramente non capisco perchè da me non funziona...e continua a non
riconoscermi quelle funzioni
boh...l'assurdo è che non le riconosce solo in quel progetto!!! sarà la
legge di murphy...
cmq ho risolto con il link che ho postato qui sotto arrivatoci tramite sc
anche se il risultato non è dei migliori
infatti anche impostando lo stesso carattere sembrano differenti
se volete dare un'occhiata andate qui ho messo uno screenshot
http://213.203.144.27/screenshot1.jpg
così magari si capisce meglio ciò che voglio realizzare
(l'immagine è intorno ai 150KB)
è una stupidaggine però a me non piace!! e non riesco a trovare un metodo
migliore...
cmq grazie per l'aiuto!
ciao!

 migliore...
vabeh, mo ti cerco la funzione che faccio prima...
La trovi implementata in APIDec e forse anche in advGraph sul sito comune.
Lascio a te il compito di cercarti le dichiarazioni del'api usate.
Ciao
Sub DrawRotatedText(ByVal hDc As Long, ByVal Degrees As Integer, ByVal x As
Long, ByVal y As Long, Text As String)
'Funziona SOLO con caratteri True Type!!!
    Dim RotateF As LOGFONT
    Dim CurF As Long, rF As Long
    Dim TM As TEXTMETRIC
    Call GetTextMetrics(hDc, TM)
    RotateF.lfEscapement = Degrees * 10
    RotateF.lfWeight = TM.tmWeight
    RotateF.lfHeight = TM.tmHeight
    RotateF.lfItalic = TM.tmItalic
    RotateF.lfStrikeOut = TM.tmStruckOut
    RotateF.lfUnderline = TM.tmUnderlined
    Call GetTextFace(hDc, UBound(RotateF.lfFaceName) + 1,
RotateF.lfFaceName)
    rF = CreateFontIndirect(RotateF)
    CurF = SelectObject(hDc, rF)
    Call TextOut(hDc, x, y, Text, Len(Text))
    'Restore
    Call SelectObject(hDc, CurF) 'Rimette Orizzontale
    Call DeleteObject(rF)
End Sub
--
NeoDataType : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net


[cut]
non t'arrabbiare zanna!! ma è quella che sto usando io + o -
Sub writeVtxt(txt As String, y As Long)
Dim lf As LOGFONT
Dim FontToUse As Long
Dim oldHdc As Long
Dim dl As Long
Dim Testo As String
Dim rc As RECT
Dim TempByteArray() As Byte
Dim ByteArrayLimit As Long
Dim i As Long
Form3.picLabel.Cls
Testo = txt
TempByteArray = StrConv("arial" & Chr$(0), vbFromUnicode)
ByteArrayLimit = UBound(TempByteArray)
For i = 0 To ByteArrayLimit
lf.lfFaceName(i) = TempByteArray(i)
Next i
'***************sto cercando di lavorare su questi valori per
'***************per ottenere risultati migliori ma non cambia molto
With lf
.lfHeight = 10
.lfWidth = 8
.lfWeight = 400
.lfQuality = PROOF_QUALITY 'DEFAULT_QUALITY
.lfPitchAndFamily = DEFAULT_PITCH Or FF_DONTCARE
.lfCharSet = DEFAULT_CHARSET
.lfOutPrecision = 2 'OUT_DEFAULT_PRECIS
.lfClipPrecision = 1 'OUT_DEFAULT_PRECIS
'***************************************************
.lfEscapement = 900
.lfOrientation = 300
End With
FontToUse = CreateFontIndirect(lf)
If FontToUse = 0 Then MsgBox "error": Exit Sub '// In caso di Errore
oldHdc = SelectObject(Form3.picLabel.hDc, FontToUse)
Form3.picLabel.CurrentX = 25
Form3.picLabel.CurrentY = y
Form3.picLabel.Print Testo
dl = SelectObject(Form3.picLabel.hDc, oldHdc)
End Sub
la differenza sta nel fatto che in quella che mi hai dato
ti ricavi i valori mediante la getTextMetrics
    Call GetTextMetrics(hDc, TM)
    RotateF.lfEscapement = Degrees * 10
    RotateF.lfWeight = TM.tmWeight
    RotateF.lfHeight = TM.tmHeight
    RotateF.lfItalic = TM.tmItalic
    RotateF.lfStrikeOut = TM.tmStruckOut
    RotateF.lfUnderline = TM.tmUnderlined
    Call GetTextFace(hDc, UBound(RotateF.lfFaceName) + 1,
                                RotateF.lfFaceName)
in quella che sto usando io li imposto manualmente
(quelli tra gli asterischi)
per il resto non mi sembra ci siano differenze, vero?
continuerò su questa strada e se un giorno troverò il testo
ruotato perfetto...lo posterò! :-))
ciao!
ps(delirante)
che subisca una leggera deformazione data dal fatto che risoluzione
orizzontale e verticale sono differenti?


 ruotato perfetto...lo posterò! :-))
La funzione che ho postato fa una rotazione perfetta.
Prova a cambiare il font, anche se non credo sia quello.
Sicuro di non avere il monitor "deformato"?
Ciao
