2010-11-15 10 views
9

abbiamo recentemente aggiornato una vecchia app VB6 per Windows su C# .NET 4.0. Sto cercando di sostituire i riferimenti alla classe Microsoft.VisualBasic.Compatibility.VB6.Support, in quanto Visual Basic 2010 mi avvisa che le classi 'Microsoft.VisualBasic.Compatibility. * Sono obsolete e supportate solo all'interno di processi a 32 bit. http://go.microsoft.com/fwlink/?linkid=160862Sostituzione obsoleto VisualBasic.Compatibility.VB6.Supporto

Questo articolo mi assicura che: "Le funzioni negli spazi dei nomi di compatibilità sono state create per ovviare alle carenze nella versione 1.0 di .NET Framework. Nella maggior parte dei casi, la funzionalità aggiunta nelle successive versioni del framework può essere utilizzata per riscrivere le funzioni, con conseguente miglioramento delle prestazioni. '

La mia domanda è: quali sono le aggiunte alle successive versioni del framework che devo utilizzare per eliminare le classi di compatibilità. *? Devo eliminare gradualmente TwipsToPixelX, TwipsToPixelY e così via. Inoltre, FontChangeUnderline, FontChangeSize e altri elementi relativi ai font.

+0

Dove usi Twips? – SLaks

+0

.NET non usa più twips. Riscrivi il tuo programma per fare affidamento sui pixel, e dovresti stare bene. –

+0

Ciò di cui ho bisogno è un modo affidabile per convertire i vecchi valori twip dall'app legacy in pixel. Per la maggior parte dei dispositivi, è semplice: pixel * 15 = twip. Tuttavia, questo non è vero su tutti i dispositivi. Questa classe VisualBasic.Compatibility ha metodi per fare questa conversione; Ho bisogno di ri-fare questi metodi in C# e rimuovere la dipendenza da VisualBasic.Compatibility. – Booberry

risposta

3

Le funzioni relative ai caratteri possono essere sostituite abbastanza facilmente. Ad esempio:

Controlla se lo stile desiderato è già impostato. Se lo è, restituisce il vecchio carattere. Altrimenti restituirà un nuovo font con lo stesso stile, ad eccezione dello stile bold, che ora è impostato in base al requisito.

0

È possibile creare caratteri con stili diversi scrivendo new Font(oldFont, FontStyle.Underline) o new Font(oldFont, 12).

-1

I twip non sono più necessari. Ora puoi semplicemente utilizzare i pixel non elaborati per le dimensioni.

Per quanto riguarda i caratteri, consultare lo Font Class.

8

Grazie per tutto l'aiuto di tutti. Solo per dare un seguito, ecco cosa ho preparato nel trattare le conversioni da twip a pixel.

private const float TWIPS_PER_INCH = 1440f; 
    private static Form _form = new Form(); 
    private static Graphics _graphics = _form.CreateGraphics(); 

    public static float TwipsPerPixelX() 
    { 
     return TWIPS_PER_INCH/_graphics.DpiX; 
    } 

    public static double TwipsToPixelsY(double twips) 
    { 
     float dpiy = _graphics.DpiY; 
     return twips * dpiy/TWIPS_PER_INCH; 
    } 

    public static double TwipsToPixelsX(double twips) 
    { 
     float dpix = _graphics.DpiX; 
     return twips * dpix/TWIPS_PER_INCH; 
    } 

    public static double PixelsToTwipsY(double pixels) 
    { 
     float dpiy = _graphics.DpiY; 
     return pixels * TWIPS_PER_INCH/dpiy; 
    } 

    public static double PixelsToTwipsX(double pixels) 
    { 
     float dpix = _graphics.DpiX; 
     return pixels * TWIPS_PER_INCH/dpix; 
    } 

speranza che qualcuno trova questo interessante e/o utile

+0

@Booberyy Mi hai salvato la vita! – Hari

0

Per i ragazzi VB là fuori, questo funziona per me, essere in grado di commutare in grassetto, corsivo e/o sottolineato.

Private Function SetNewFont(ByRef f As Font, Optional ByVal bToggleBold As Boolean = False, Optional ByVal bToggleItalics As Boolean = False, Optional ByVal bToggleUnderLine As Boolean = False) As Font 

    Dim fs As FontStyle 

    If bToggleBold = True Then 
     If f.Bold = False Then 
      fs = FontStyle.Bold 
     End If 
    Else 
     If f.Bold = True Then 
      fs = FontStyle.Bold 
     End If 
    End If 

    If bToggleItalics = True Then 
     If f.Italic = False Then 
      fs += FontStyle.Italic 
     End If 
    Else 
     If f.Italic = True Then 
      fs += FontStyle.Italic 
     End If 
    End If 

    If bToggleUnderLine = True Then 
     If f.Underline = False Then 
      fs += FontStyle.Underline 
     End If 
    Else 
     If f.Underline = True Then 
      fs += FontStyle.Underline 
     End If 
    End If 

    Return New Font(f, fs) 

End Function