2010-11-15 9 views
9

Wir haben vor kurzem eine alte VB6 Windows App auf C# .NET 4.0 aktualisiert. Ich möchte Referenzen auf die Microsoft.VisualBasic.Compatibility.VB6.Support-Klasse ersetzen, da Visual Basic 2010 mich warnt, dass 'Microsoft.VisualBasic.Compatibility. * - Klassen veraltet sind und nur in 32-Bit-Prozessen unterstützt werden. http://go.microsoft.com/fwlink/?linkid=160862 'ersetzen veraltete VisualBasic.Compatibility.VB6.Support

Dieser Artikel versichert mir:' Funktionen in den Namespaces Kompatibilität wurden erstellt, um Mängel in Version 1.0 von .NET Framework zu umgehen. In den meisten Fällen können Funktionen, die in späteren Framework-Versionen hinzugefügt wurden, verwendet werden, um die Funktionen neu zu schreiben, was zu einer verbesserten Leistung führt.

Meine Frage ist, was sind die Ergänzungen zu späteren Framework-Versionen, die ich verwenden muss, um die Kompatibilität. * Klassen zu beseitigen? Ich muss TwipsToPixelX, TwipsToPixelY usw. auslaufen lassen. Außerdem FontChangeUnderline, FontChangeSize und andere Schriftarten.

+0

Wo verwenden Sie Twips? – SLaks

+0

.NET verwendet Twips nicht mehr. Schreiben Sie Ihr Programm neu, um sich stattdessen auf Pixel zu verlassen, und Sie sollten in Ordnung sein. –

+0

Was ich brauche, ist eine zuverlässige Möglichkeit, die alten Twips-Werte von der alten App in Pixel umzuwandeln. Für die meisten Geräte ist es einfach: Pixel * 15 = Twips. Dies gilt jedoch nicht für alle Geräte. Diese VisualBasic.Compatibility-Klasse verfügt über Methoden für diese Konvertierung; Ich muss diese Methoden in C# erneut durchführen und die Abhängigkeit von VisualBasic.Compatibility entfernen. – Booberry

Antwort

3

Die fontbezogenen Funktionen können leicht genug ersetzt werden. Zum Beispiel:

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 

Dies überprüft, ob der gewünschte Stil bereits festgelegt ist. Wenn dies der Fall ist, wird die alte Schriftart zurückgegeben. Andernfalls wird eine neue Schriftart mit demselben Stil zurückgegeben, mit Ausnahme des bold-Stils, der jetzt entsprechend der Anforderung festgelegt wird.

0

Sie können Schriftarten mit unterschiedlichen Stilen erstellen, indem Sie new Font(oldFont, FontStyle.Underline) oder new Font(oldFont, 12) schreiben.

-1

Twips sind nicht mehr notwendig. Sie können jetzt einfach rohe Pixel für Dimensionen verwenden.

Wie für Schriftarten, überprüfen Sie die Font Class.

8

Danke für die Hilfe allen. Nur um zu folgen, hier ist, was ich im Umgang mit den Twips-zu-Pixel-Konvertierungen gekocht habe.

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

Hoffnung, dass jemand dies interessant findet und/oder nützliche

+0

@Booberyy Du hast mein Leben gerettet! – Hari

0

Für die VB Jungs da draußen, das für mich arbeitet, fett umschalten zu können, kursiv und/oder unterstrichen.

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 
Verwandte Themen