LEADTOOLSフォーム(Leadtools.Forms.DocumentWritersアセンブリ)

フレームを表示

UpdateMetaFileResolutionメソッド








ソースEMFのハンドル。
新しい水平解像度
新しい垂直解像度
既存のWindows Enhanced Metafile(EMF)の解像度を変更します。
構文
public static IntPtr UpdateMetaFileResolution( 
   IntPtr emfHandle,
   int xResolution,
   int yResolution
)
'Declaration
 
Public Shared Function UpdateMetaFileResolution( _
   ByVal emfHandle As IntPtr, _
   ByVal xResolution As Integer, _
   ByVal yResolution As Integer _
) As IntPtr
'Usage
 
Dim emfHandle As IntPtr
Dim xResolution As Integer
Dim yResolution As Integer
Dim value As IntPtr
 
value = DocumentWriter.UpdateMetaFileResolution(emfHandle, xResolution, yResolution)
public static IntPtr UpdateMetaFileResolution( 
   IntPtr emfHandle,
   int xResolution,
   int yResolution
)
 function Leadtools.Forms.DocumentWriters.DocumentWriter.UpdateMetaFileResolution( 
   emfHandle ,
   xResolution ,
   yResolution 
)
public:
static IntPtr UpdateMetaFileResolution( 
   IntPtr emfHandle,
   int xResolution,
   int yResolution
) 

パラメーター

emfHandle
ソースEMFのハンドル。
xResolution
新しい水平解像度
yResolution
新しい垂直解像度

戻り値

変更されたWindows Enhanced Metafile(EMF)へのハンドル。
解説

EMFハンドルを生成するときCreateEnhMetaFileウィンドウズAPIを使用する場合に備えて、このメソッドは特に役に立ちます。たとえば、必要条件は、300 DPIで8.5×11インチでEMFを作成することです。CreateEnhMetaFileで、生成されるEMFの解像度は、参照HDCの解像度と同じです。解像度によるHDCが目的の人と平等であるとわかることが非実用的であるため、これを達成するためにUpdateMetaFileResolutionを使うことができます。ここにサンプルがある。


            const int resolution = 300;
            // Calculate the width in pixels:
            int widthInPixels = (int)(8.5 * resolution);
            int heightInPixels = (int)(11.0 * resolution);
            Win32.RECT rc = new Win32.RECT();
            rc.left = 0;
            rc.top = 0;
            rc.right = widthInPixels;
            rc.bottom = heightInPixels;
            IntPtr hdc = Win32.CreateEnhMetaFile(IntPtr.Zero, IntPtr.Zero, rc, IntPtr.Zero);
            IntPtr hEmfTemp = Win32.CloseEnhMetaFile(hdc);
            // hEmfTemp has the same resolution as the screen, change it to the desired one
            IntPtr hEmf;
            hEmf = DocumentWriter.UpdateMetaFileResolution(hEmfTemp, resolution, resolution);
            Win32.DeleteEnhMetaFile(hEmfTemp);
            // hEmf now is 8.5 by 11 at 300
            

xResolutionまたはyResolutionが0であるならば、EMFハンドルのオリジナルの解像度が使われます。xResolutionかyResolutionが-1と等しいならば、オリジナルのEMFハンドルのためのアスペクト比は維持管理されます、そして、どちらのxResolutionまたはyResolutionのための正の値でも変更されたemfハンドルのための解像度(DPI)値として使われます。

xResolutionとyResolutionが両方のより小さい0であるはずであるというわけではないことに注意すべきです。

サンプル

このサンプルはディスクから拡張メタファイルをロードして、それから200×200ドット/インチまでその解像度を変更します。

Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Forms.DocumentWriters
Imports Leadtools.Forms.Ocr

Private Shared Sub ShowMetaFileDimension(hemf As IntPtr)
   ' Use System.Drawing.Imaging.Metafile to load the EMF and get its information
   Using metafile As New System.Drawing.Imaging.Metafile(hemf, False)
      Console.WriteLine("Size: {0} by {1} pixels", metafile.Width, metafile.Height)
      Console.WriteLine("Resolution: {0} by {1} pixels/inch", metafile.HorizontalResolution, metafile.VerticalResolution)
   End Using
End Sub
'''/ Windows API
<DllImport("gdi32")> _
Private Shared Function GetEnhMetaFile(lpszMetaFile As String) As IntPtr
End Function
<DllImport("gdi32")> _
Private Shared Function DeleteEnhMetaFile(hemf As IntPtr) As Integer
End Function

      
Public Sub ChangeMetaFileResolutionExample()
   ' Load the original meta file
   Dim hemf As IntPtr = GetEnhMetaFile(Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.emf"))

   ' Show the dimension
   Console.WriteLine("Original EMF dimension:")
   ShowMetaFileDimension(hemf)

   ' Change the resolution to be 200 by 200 dots/inch
   Dim hemfDest As IntPtr = DocumentWriter.UpdateMetaFileResolution(hemf, 200, 200)

   ' No need for the original handle anymore
   DeleteEnhMetaFile(hemf)

   Console.WriteLine("New EMF dimension:")
   ShowMetaFileDimension(hemfDest)

   DeleteEnhMetaFile(hemfDest)
End Sub
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Forms.DocumentWriters;
using Leadtools.Forms.Ocr;

private static void ShowMetaFileDimension(IntPtr hemf)
{
   // Use System.Drawing.Imaging.Metafile to load the EMF and get its information
   using (var metafile = new System.Drawing.Imaging.Metafile(hemf, false))
   {
      Console.WriteLine("Size: {0} by {1} pixels", metafile.Width, metafile.Height);
      Console.WriteLine("Resolution: {0} by {1} pixels/inch", metafile.HorizontalResolution, metafile.VerticalResolution);
   }
}
//// Windows API
[DllImport("gdi32")]
private extern static IntPtr GetEnhMetaFile(string lpszMetaFile);
[DllImport("gdi32")]
private extern static int DeleteEnhMetaFile(IntPtr hemf);

      
public void ChangeMetaFileResolutionExample()
{
   // Load the original meta file
   var hemf = GetEnhMetaFile(Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.emf"));

   // Show the dimension
   Console.WriteLine("Original EMF dimension:");
   ShowMetaFileDimension(hemf);

   // Change the resolution to be 200 by 200 dots/inch
   var hemfDest = DocumentWriter.UpdateMetaFileResolution(hemf, 200, 200);

   // No need for the original handle anymore
   DeleteEnhMetaFile(hemf);

   Console.WriteLine("New EMF dimension:");
   ShowMetaFileDimension(hemfDest);

   DeleteEnhMetaFile(hemfDest);
}
必要条件

ターゲットプラットホーム

参照

参照

DocumentWriterクラス
DocumentWriterメンバ
DocumentWriterクラス
DocumentFormat列挙体
LEADTOOLSドキュメントライタでのプログラミング
アプリケーションに含まれるファイル
特殊なLEAD機能のアンロック

Leadtools.Forms.DocumentWritersは、DocumentまたはMedicalツールキットのライセンスと、解除キーが必要です。詳細は、以下を参照してください。Imaging Pro/Document/Medicalの機能