2010-11-15 86 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