本文整理汇总了C#中System.Drawing.Imaging.Metafile类的典型用法代码示例。如果您正苦于以下问题:C# Metafile类的具体用法?C# Metafile怎么用?C# Metafile使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
Metafile类属于System.Drawing.Imaging命名空间,在下文中一共展示了Metafile类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Form1
//引入命名空间
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
// for Marshal.Copy
using System.Runtime.InteropServices;
public class Form1 : Form
{
private Metafile metafile1;
private Graphics.EnumerateMetafileProc metafileDelegate;
private Point destPoint;
public Form1()
{
metafile1 = new Metafile(@"C:\Test.wmf");
metafileDelegate = new Graphics.EnumerateMetafileProc(MetafileCallback);
destPoint = new Point(20, 10);
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.EnumerateMetafile(metafile1, destPoint, 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);
}
metafile1.PlayRecord(recordType, flags, dataSize, dataArray);
return true;
}
static void Main()
{
Application.Run(new Form1());
}
}
示例2: new Metafile(String fileName, hdc)
/*
GDI+ Programming in C# and VB .NET
by Nick Symmonds
Publisher: Apress
ISBN: 159059035X
*/
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace MetaFile_c
{
/// <summary>
/// Summary description for MetaFile.
/// </summary>
public class MetaFile : System.Windows.Forms.Form
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public MetaFile()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
//
// MetaFile
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "MetaFile";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "MetaFile";
this.Load += new System.EventHandler(this.MetaFile_Load);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new MetaFile());
}
private void MetaFile_Load(object sender, System.EventArgs e)
{
// Create a graphics object from the forms graphics object
// and get the handle to it.
using (Graphics FormGraphics = this.CreateGraphics())
{
IntPtr hdc = FormGraphics.GetHdc();
// Now create a blank metafile using the graphics handle
// This is the metafile where all drawing instructions will
// be recorded.
Metafile mf = new Metafile("mymeta.emf", hdc);
// In order to record drawing commands we need to draw on something
// That something is a new graphics object
using (Graphics MetaGraphics = Graphics.FromImage(mf))
{
using ( mf )
{
MetaGraphics.SmoothingMode = SmoothingMode.AntiAlias;
//Now we are ready to draw on the metagraphics object
MetaGraphics.DrawRectangle(Pens.Black, 10, 10, 100, 50 );
MetaGraphics.DrawLine(Pens.Orange, 10, 70, 150, 100 );
}
}
FormGraphics.ReleaseHdc(hdc);
}
}
protected override void OnPaint( PaintEventArgs e )
{
Metafile mf = new Metafile("mymeta.emf");
e.Graphics.DrawImage(mf, new Point(10,10));
}
}
}