2016-10-12 10 views
0

それを作成した後、EMFファイルを配置しません:ZedGraphは、私は以下のコード持って

CopyEnhMetaFile(hEMF, tempName);が、呼び出された画像が作成されますが、それはで使用されているため DeleteEnhMetaFile(hEMF);関数を呼び出した後、私は写真を削除することはできません
static internal bool SaveEnhMetafileToFile(Metafile mf, string fileName) 
{ 
    bool bResult = false; 
    IntPtr hEMF; 
    hEMF = mf.GetHenhmetafile(); // invalidates mf 
    if (!hEMF.Equals(new IntPtr(0))) 
    { 
     StringBuilder tempName = new StringBuilder(fileName); 
     CopyEnhMetaFile(hEMF, tempName); 
     DeleteEnhMetaFile(hEMF); 

    } 
    return bResult; 
} 

を私のプログラム(vshost.exe)。 プログラムはC#で作成され、私は投稿のリンクに記載されているように

+0

はこの理由です:http://stackoverflow.com/questions/ 14869578/copyenhammafile-is-not-release-the-handle-if-deleteenhメタファイルは-alc- – PaulF

+0

おそらく、そのリンクには削除方法が記載されていません –

答えて

1

- あなたはCopyEnhMetaFileによって作成されたハンドルを削除する必要があります。

static internal bool SaveEnhMetafileToFile(Metafile mf, string fileName) 
{ 
    bool bResult = false; 
    IntPtr hEMF; 
    hEMF = mf.GetHenhmetafile(); // invalidates mf 
    if (!hEMF.Equals(new IntPtr(0))) 
    { 
    StringBuilder tempName = new StringBuilder(fileName); 
    IntPtr hCopyEMF = CopyEnhMetaFile(hEMF, tempName.ToString()); 
    DeleteEnhMetaFile(hCopyEMF); 
    DeleteEnhMetaFile(hEMF); 
    } 
return bResult; 
} 
+0

これは機能します!答えは上です! :) –

関連する問題