2010-11-15 11 views
9

Recientemente hemos actualizado una vieja aplicación de Windows VB6 a C# .NET 4.0. Estoy buscando reemplazar las referencias a la clase Microsoft.VisualBasic.Compatibility.VB6.Support, ya que Visual Basic 2010 me advierte que las clases 'Microsoft.VisualBasic.Compatibility. * Son obsoletas y solo se admiten en procesos de 32 bits. http://go.microsoft.com/fwlink/?linkid=160862 'Reemplazo de VisualBasic.Compatibility.VB6.Support obsoleto

Este artículo me asegura que:' Las funciones en los espacios de nombres de compatibilidad se crearon para solucionar las deficiencias en la versión 1.0 de .NET Framework. En la mayoría de los casos, la funcionalidad agregada en versiones de framework posteriores puede usarse para reescribir las funciones, lo que resulta en un mejor rendimiento. '

Mi pregunta es, ¿cuáles son las adiciones a las versiones de framework posteriores que necesito usar para eliminar las clases de Compatibilidad. *? Necesito eliminar gradualmente TwipsToPixelX, TwipsToPixelY, y así sucesivamente. Además, FontChangeUnderline, FontChangeSize y otras cosas relacionadas con las fuentes.

+0

¿Dónde está usando Twips? – SLaks

+0

.NET ya no usa twips. Reescribe tu programa para que dependa de los píxeles, y deberías estar bien. –

+0

Lo que necesito es una forma confiable de convertir los valores de twips antiguos de la aplicación heredada a píxeles. Para la mayoría de los dispositivos, es simple: píxeles * 15 = twips. Sin embargo, esto no es cierto en todos los dispositivos. Esta clase de VisualBasic.Compatibility tiene métodos para hacer esta conversión; Necesito volver a hacer estos métodos en C# y eliminar la dependencia de VisualBasic.Compatibility. – Booberry

Respuesta

3

Las funciones relacionadas con las fuentes se pueden reemplazar con la suficiente facilidad. Por ejemplo:

Function FontChangeBold(f As Font, bold As Boolean) As Font 
    Dim alreadySet = (f.Style And FontStyle.Bold) = FontStyle.Bold 
    If bold = alreadySet Then Return f 
    If bold Then Return New Font(f, f.Style Or FontStyle.Bold) 
    Return New Font(f, f.Style And Not FontStyle.Bold) 
End Function 

Esto comprueba si el estilo deseado ya está configurado. Si es así, devuelve la fuente anterior. De lo contrario, devolverá una nueva fuente que tenga el mismo estilo, excepto el estilo bold, que ahora se configura de acuerdo con el requisito.

0

Puede crear fuentes con diferentes estilos escribiendo new Font(oldFont, FontStyle.Underline) o new Font(oldFont, 12).

-1

Twips ya no es necesario. Simplemente puede usar píxeles brutos para las dimensiones ahora.

En cuanto a las fuentes, consulte Font Class.

8

Gracias por ayudar a todos. Solo para dar seguimiento, esto es lo que inventé al tratar las conversiones de twips-to-pixeles.

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; 
    } 

la esperanza de que alguien encuentra este interesante y/o útil

+0

@Booberyy ¡Salvaste mi vida! – Hari

0

Para los chicos VB por ahí, esto funciona para mí, ser capaz de alternar negrita, cursiva y/o subrayado.

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