2010-11-15 83 views
9

我们最近将旧的VB6 Windows应用程序升级到了C#.NET 4.0。我正在寻找替代对Microsoft.VisualBasic.Compatibility.VB6.Support类的引用,因为Visual Basic 2010警告我'Microsoft.VisualBasic.Compatibility。*类已过时并且仅在32位进程中受支持。 http://go.microsoft.com/fwlink/?linkid=160862替换过时的VisualBasic.Compatibility.VB6.Support

本文向我保证:”在兼容性命名空间功能的建立是为了解决缺点在.NET Framework 1.0版。在大多数情况下,可以使用后来的框架版本中添加的功能来重写函数,从而提高性能。

我的问题是,我需要使用什么补充到后来的框架版本来取消兼容性。*类?我需要逐步淘汰TwipsToPixelX,TwipsToPixelY等等。此外,FontChangeUnderline,FontChangeSize和其他与字体相关的东西。

+0

你在哪里使用Twips? – SLaks 2010-11-15 15:49:56

+0

.NET不再使用缇。重写你的程序依赖于像素,而你应该没问题。 – 2010-11-15 15:50:09

+0

我需要的是将传统应用程序中旧缇值转换为像素的可靠方法。对于大多数设备来说,很简单:像素* 15 =缇。但是,在所有设备上都不是这样。此VisualBasic.Compatibility类具有用于执行此转换的方法;我需要在C#中重新执行这些方法,并删除对VisualBasic.Compatibility的依赖关系。 – Booberry 2010-11-15 16:21:39

回答

3

字体相关的功能可以很容易地被替换。例如:

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 

这将检查是否已设置所需样式。如果是,则返回旧字体。否则,它将返回一个具有相同样式的新字体,除了bold样式,现在根据需要设置。

0

您可以通过编写new Font(oldFont, FontStyle.Underline)new Font(oldFont, 12)来创建不同风格的字体。

-1

缇不再需要。您现在可以简单地使用原始像素来制作维度。

至于字体,请查看Font Class

8

感谢大家的帮助。为了跟进,以下是我在处理缇到像素转换时所做的工作。

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

希望有人发现了这个有趣的和/或有用

+0

@Booberyy你救了我的命! – Hari 2014-01-29 09:17:24

0

对于VB的家伙在那里,这个工作对我来说,能够切换粗体,斜体,和/或下划线。

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