Leadtools Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
FromWmf Method
See Also  Example
Leadtools Namespace > RasterImage Class : FromWmf Method



hwmf
Handle to the WMF to be converted.
width
Amount by which to scale the metafile's original width.
height
Amount by which to scale the metafile's original height.
Converts a Windows metafile (WMF) into a LEAD RasterImage object.

Syntax

Visual Basic (Declaration) 
Public Shared Function FromWmf( _
   ByVal hwmf As IntPtr, _
   ByVal width As Integer, _
   ByVal height As Integer _
) As RasterImage
Visual Basic (Usage)Copy Code
Dim hwmf As IntPtr
Dim width As Integer
Dim height As Integer
Dim value As RasterImage
 
value = RasterImage.FromWmf(hwmf, width, height)
C# 
public static RasterImage FromWmf( 
   IntPtr hwmf,
   int width,
   int height
)
C++/CLI 
public:
static RasterImage^ FromWmf( 
   IntPtr hwmf,
   int width,
   int height
) 

Parameters

hwmf
Handle to the WMF to be converted.
width
Amount by which to scale the metafile's original width.
height
Amount by which to scale the metafile's original height.

Return Value

The newly created RasterImage object.

Example

This example loads a RasterImage, converts it to a WMF, then converts the WMF back to a RasterImage.

Visual BasicCopy Code
<DllImport("Gdi32", CharSet:=CharSet.Auto)> _
Shared Function DeleteMetaFile(ByVal hwmf As IntPtr) As Integer
End Function

Public Sub FromWmfExample()
   RasterCodecs.Startup()
   Dim codecs As New RasterCodecs()

   ' Load an image
   Dim image As RasterImage = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp", 24, CodecsLoadByteOrder.BgrOrGray, 1, 1)

   ' Convert it to WMF
   Dim hwmf As IntPtr = image.ToWmf()

   ' Note, since we converted to an WMF we have two copies of the image in memory and "image" is still usable
   image.Dispose()

   ' Convert the WMF back to a RasterImage preserving the size
   image = RasterImage.FromWmf(hwmf, 0, 0)

   ' Not since we converted from the WMF, we need to delete it ourselves
   DeleteMetaFile(hwmf)

   ' Save it to disk
   codecs.Save(image, LeadtoolsExamples.Common.ImagesPath.Path + "Image1_FromWmf.bmp", RasterImageFormat.Bmp, 24)

   image.Dispose()

   ' Clean up
   codecs.Dispose()
   RasterCodecs.Shutdown()
End Sub
C#Copy Code
      [DllImport("Gdi32", CharSet = CharSet.Auto)] 
static extern int DeleteMetaFile(IntPtr hwmf); 
 
public void FromWmfExample() 

   RasterCodecs.Startup(); 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Load an image 
   RasterImage image = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp", 24, CodecsLoadByteOrder.BgrOrGray, 1, 1); 
 
   // Convert it to WMF 
   IntPtr hwmf = image.ToWmf(); 
 
   // Note, since we converted to an WMF we have two copies of the image in memory and "image" is still usable 
   image.Dispose(); 
 
   // Convert the WMF back to a RasterImage preserving the size 
   image = RasterImage.FromWmf(hwmf, 0, 0); 
 
   // Not since we converted from the WMF, we need to delete it ourselves 
   DeleteMetaFile(hwmf); 
 
   // Save it to disk 
   codecs.Save(image, LeadtoolsExamples.Common.ImagesPath.Path + "Image1_FromWmf.bmp", RasterImageFormat.Bmp, 24); 
 
   image.Dispose(); 
 
   // Clean up 
   codecs.Dispose(); 
   RasterCodecs.Shutdown(); 
}

Remarks

When this method is completed, there are two copies of the drawing in memory: the new RasterImage object and the original WMF. Freeing one will not affect the other.

The metafile can be loaded at the original dimension or scaled by using the width and height parameters.

If width == 0 and height == 0 - the metafile is loaded at the size present in the file.

If width == 0 and height > 0 - the metafile is stretched so that it has the height height (preserving the aspect ratio).

If width > 0 and height == 0 - the metafile is stretched so that it has the width width (preserving the aspect ratio).

If width > 0 and height > 0 - the metafile is stretched so that it has the width width and height height (the aspect ratio is ignored).

This function does not support signed images.

Requirements

Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family

See Also