Question Changing Measurement Units of Form to from Pixels to Twips

dineshkumaar

Member
Joined
Jun 5, 2009
Messages
21
Programming Experience
10+
Hi everybody!

Is there any way so that i can set the measurement unit of a form from Pixels to Twips?

Regards

Thanks
 

jmcilhinney

VB.NET Forum Moderator
Staff member
Joined
Aug 17, 2004
Messages
14,169
Location
Sydney, Australia
Programming Experience
10+
No, it's not. You'll have to perform the conversion yourself. Here's how it's done when upgrading VB6 code to VB.NET:
Code:
Private Shared Sub SetUpTwipsPerPixel(ByVal Optional Force As Boolean = False)
    If (Not Support.m_IsTwipsPerPixelSetUp OrElse Force) Then
        Support.m_TwipsPerPixelX = 0
        Support.m_TwipsPerPixelY = 0
        Try 
            Dim dC As IntPtr = NativeMethods.GetDC(NativeMethods.NullIntPtr)
            If Not dC.Equals(NativeMethods.NullIntPtr) Then
                Support.m_TwipsPerPixelX = (1440 / CDbl(NativeMethods.GetDeviceCaps(dC, &H58)))
                Support.m_TwipsPerPixelY = (1440 / CDbl(NativeMethods.GetDeviceCaps(dC, 90)))
                NativeMethods.ReleaseDC(NativeMethods.NullIntPtr, dC)
            End If
        Catch exception1 As Exception
            ProjectData.SetProjectError(exception1)
            ProjectData.ClearProjectError
        End Try
        Support.m_IsTwipsPerPixelSetUp = True
        If ((Support.m_TwipsPerPixelX = 0) OrElse (Support.m_TwipsPerPixelY = 0)) Then
            Support.m_TwipsPerPixelX = 15
            Support.m_TwipsPerPixelY = 15
            VB6Errors.RaiseError(7, Resources.GetResourceString("Misc_SetUpTwipsPerPixel"))
        End If
    End If
End Sub
As you can see, it involves invoking the Windows API. As such, it's a bit of a pain but you can implement something similar yourself.
 

JohnH

VB.NET Forum Moderator
Staff member
Joined
Dec 17, 2005
Messages
15,327
Location
Norway
Programming Experience
10+
You can reference Microsoft.VisualBasic.Compatibility and use these properties and functions:
Code:
Microsoft.VisualBasic.Compatibility.VB6.TwipsPerPixelX 
TwipsPerPixelX
TwipsToPixelsX(x)
TwipsToPixelsY(y)
 

jmcilhinney

VB.NET Forum Moderator
Staff member
Joined
Aug 17, 2004
Messages
14,169
Location
Sydney, Australia
Programming Experience
10+
You can reference Microsoft.VisualBasic.Compatibility and use these properties and functions:
Code:
Microsoft.VisualBasic.Compatibility.VB6.TwipsPerPixelX 
TwipsPerPixelX
TwipsToPixelsX(x)
TwipsToPixelsY(y)
I'm not 100% sure why but those methods have been marked obsolete in .NET 4.0, so it's probably best not to rely on them. I'm not sure what that means for upgraded VB6 code.
 
Top Bottom