これを行うときにラインなどがアンチエイリアス処理されないのはなぜですか?C#/ WPF/WinFormsでWMFをBitMapにレンダリングするときにアンチエイリアスを有効にするには?
using (var myGraphics = Graphics.FromImage(bitmap))
{
myGraphics.CompositingQuality = CompositingQuality.HighQuality;
myGraphics.SmoothingMode = SmoothingMode.HighQuality;
myGraphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
myGraphics.Clear(backgroundColor);
myGraphics.EnumerateMetafile(m_metafile, new Point(0, 0), m_metafileDelegate);
}
デリゲート関数は次のようになります。
private bool MetafileCallback(EmfPlusRecordType recordType, int flags, int dataSize, IntPtr data, PlayRecordCallback callbackData)
{
byte[] dataArray = null;
if (data != IntPtr.Zero)
{
// Copy the unmanaged record to a managed byte buffer
// that can be used by PlayRecord.
dataArray = new byte[dataSize];
Marshal.Copy(data, dataArray, 0, dataSize);
}
m_metafile.PlayRecord(recordType, flags, dataSize, dataArray);
return true;
}
は、私がここにアンチエイリアシングを得るために、特定のタイプのためにPlayRecordを上書きする必要がありますか?
WMFはAutoCADから提供されています。
これはWPFとどのように関連していますか? 'Graphics'は' System.Drawing'に由来し、 'Metafile'はWinFormsの両方の名前空間である' System.Drawing.Image'に由来します。 – Clemens
私はWPFアプリケーションで使用していますが、おそらく関係はありません。タグを更新します。 – Macke