Buonasera,
vorrei trasformare una stringa di testo in caratteri provenienti da un'immagine (come se fosse un font custom) ma il risultato non è quello voluto poiché nell'immagine risultante viene sempre copiata una sezione di font corrispondente al numero di caratteri della stringa di input.
Per esempio, se voglio convertire la parola: 'ciao' il programma restituisce '0123' e così via procedendo per le lettere in ordine alfabetico fino ad arrivare, eventualmente, ai simboli.
[CODE]
Dim LCF As Bitmap = My.Resources.LiquidCristalFont ' Una bitmap 550x11 che contiene i disegni delle lettere e dei numeri nella sequenza indicata nella funzione seguente assegnata alla stringa 'Font'.
Function TransformToFont(ByVal Text As String) As Bitmap
Dim _Text As String = Text.Trim.ToUpper
Dim Font As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ !?\/.,:;[]()'""""%=+-*^™#_$"
Dim Width As Integer = 9 ' La larghezza della finestra che preleva la sezione d'immagine LCF (la larghezza di ogni lettera)
Dim Height As Integer = 11 ' L'altezza dell'imagine LCF
Dim bmp As New Bitmap(_Text.Length * Width, Height)
Dim gr As Graphics = Graphics.FromImage(bmp)
gr.Clear(Color.Transparent)
For x As Integer = 0 To _Text.Length - 1
Dim _Char As String = _Text.Substring(x, 1)
If Font.Contains(_Char) Then
Dim Index As Integer = Font.IndexOf(_Char) * Width ' * Calcolo l'offset per posizionare la finestra di copia su LCF
moltiplicando l'indice per del carattere per la larghezza della finestra di copia (praticamente lo step).
gr.DrawImage(Crop(LCF, Index, 0, Width, Height), New Point(Index, 0)) ' Disegno la sezione d'immagine nella bitmap di destinazione
Else
gr.DrawImage(Crop(LCF, 324, 0, Width, Height), New Point(324, 0)) ' Lascio uno spazio
End If
Next
Return bmp
End Function
Public Function Crop(ByRef Image As Bitmap, XOffset As Integer, YOffset As Integer, ByVal Width As Integer, ByVal Height As Integer) As Bitmap
Try
Dim bmp As New Bitmap(Width, Height)
Dim gr As Graphics = Graphics.FromImage(bmp)
gr.DrawImage(Image, 0, 0, New Rectangle(XOffset, YOffset, Width, Height), GraphicsUnit.Pixel)
Return bmp
Catch ex As Exception
Return Image
End Try
End Function
Grazie a chi vorrà aiutarmi.