<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2F2D_Graphics%2Fwmf_file</id>
		<title>Csharp/C Sharp/2D Graphics/wmf file - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2F2D_Graphics%2Fwmf_file"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/wmf_file&amp;action=history"/>
		<updated>2026-04-29T17:54:07Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/wmf_file&amp;diff=803&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/wmf_file&amp;diff=803&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/wmf_file&amp;diff=804&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/wmf_file&amp;diff=804&amp;oldid=prev"/>
				<updated>2010-05-26T11:41:39Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Create Metafile==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Drawing.Imaging;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
   &lt;br /&gt;
class CreateMetafile: Form&lt;br /&gt;
{&lt;br /&gt;
     Metafile mf;&lt;br /&gt;
   &lt;br /&gt;
     public static void Main()&lt;br /&gt;
     {&lt;br /&gt;
          Application.Run(new CreateMetafile());&lt;br /&gt;
     }&lt;br /&gt;
     public CreateMetafile()&lt;br /&gt;
     {&lt;br /&gt;
          ResizeRedraw = true;&lt;br /&gt;
          Graphics grfx  = CreateGraphics();&lt;br /&gt;
          IntPtr ipHdc = grfx.GetHdc();&lt;br /&gt;
   &lt;br /&gt;
          mf = new Metafile(&amp;quot;CreateMetafile.emf&amp;quot;, ipHdc);&lt;br /&gt;
   &lt;br /&gt;
          grfx.ReleaseHdc(ipHdc);&lt;br /&gt;
          grfx.Dispose();&lt;br /&gt;
   &lt;br /&gt;
          grfx = Graphics.FromImage(mf);&lt;br /&gt;
   &lt;br /&gt;
          grfx.FillEllipse(Brushes.Blue, 60, 20, 20, 20);&lt;br /&gt;
          grfx.Dispose();&lt;br /&gt;
     }&lt;br /&gt;
     protected override void OnPaint(PaintEventArgs pea)&lt;br /&gt;
     {&lt;br /&gt;
          DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height);&lt;br /&gt;
     }  &lt;br /&gt;
     protected void DoPage(Graphics grfx, Color clr, int cx, int cy)&lt;br /&gt;
     {&lt;br /&gt;
          for (int y = 0; y &amp;lt; cy; y += mf.Height)&lt;br /&gt;
          for (int x = 0; x &amp;lt; cx; x += mf.Width)&lt;br /&gt;
               grfx.DrawImage(mf, x, y, mf.Width, mf.Height);&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create Metafile (Memory)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Drawing.Imaging;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
   &lt;br /&gt;
class CreateMetafileMemory: Form&lt;br /&gt;
{&lt;br /&gt;
     MemoryStream ms = new MemoryStream();&lt;br /&gt;
   &lt;br /&gt;
     public static void Main()&lt;br /&gt;
     {&lt;br /&gt;
          Application.Run(new CreateMetafileMemory());&lt;br /&gt;
     }&lt;br /&gt;
     public CreateMetafileMemory()&lt;br /&gt;
     {&lt;br /&gt;
          ResizeRedraw = true; &lt;br /&gt;
   &lt;br /&gt;
          Graphics grfx = CreateGraphics();&lt;br /&gt;
          IntPtr ipHdc = grfx.GetHdc();&lt;br /&gt;
   &lt;br /&gt;
          Metafile mf = new Metafile(ms, ipHdc); &lt;br /&gt;
   &lt;br /&gt;
          grfx.ReleaseHdc(ipHdc);&lt;br /&gt;
          grfx.Dispose();&lt;br /&gt;
          grfx = Graphics.FromImage(mf);&lt;br /&gt;
   &lt;br /&gt;
          grfx.FillEllipse(Brushes.Gray, 0, 0, 100, 100);&lt;br /&gt;
          grfx.DrawEllipse(Pens.Black, 0, 0, 100, 100);&lt;br /&gt;
          grfx.DrawArc(new Pen(Color.Red, 10), 20, 20, 60, 60, 30, 120);&lt;br /&gt;
          grfx.Dispose();&lt;br /&gt;
     }&lt;br /&gt;
     protected override void OnPaint(PaintEventArgs pea)&lt;br /&gt;
     {&lt;br /&gt;
          DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height);&lt;br /&gt;
     }        &lt;br /&gt;
     protected void DoPage(Graphics grfx, Color clr, int cx, int cy)&lt;br /&gt;
     {&lt;br /&gt;
          ms.Position = 0;&lt;br /&gt;
          Metafile mf = new Metafile(ms);&lt;br /&gt;
   &lt;br /&gt;
          for (int y = 0; y &amp;lt; cy; y += mf.Height)&lt;br /&gt;
          for (int x = 0; x &amp;lt; cx; x += mf.Width)&lt;br /&gt;
               grfx.DrawImage(mf, x, y, mf.Width, mf.Height);&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create Metafile (Reload)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Drawing.Imaging;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
class CreateMetafileReload : Form {&lt;br /&gt;
    const string strMetafile = &amp;quot;CreateMetafileReload.emf&amp;quot;;&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        Application.Run(new CreateMetafileReload());&lt;br /&gt;
    }&lt;br /&gt;
    public CreateMetafileReload() {&lt;br /&gt;
        ResizeRedraw = true;&lt;br /&gt;
        if (!File.Exists(strMetafile)) {&lt;br /&gt;
            Graphics grfx = CreateGraphics();&lt;br /&gt;
            IntPtr ipHdc = grfx.GetHdc();&lt;br /&gt;
            Metafile mf = new Metafile(strMetafile, ipHdc);&lt;br /&gt;
            grfx.ReleaseHdc(ipHdc);&lt;br /&gt;
            grfx.Dispose();&lt;br /&gt;
            grfx = Graphics.FromImage(mf);&lt;br /&gt;
            grfx.DrawEllipse(Pens.Black, 0, 0, 100, 100);&lt;br /&gt;
            grfx.FillEllipse(Brushes.Blue, 60, 20, 20, 20);&lt;br /&gt;
            grfx.DrawArc(new Pen(Color.Red, 10), 20, 20, 60, 60, 30, 120);&lt;br /&gt;
            grfx.Dispose();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    protected override void OnPaint(PaintEventArgs pea) {&lt;br /&gt;
        DoPage(pea.Graphics, ForeColor, ClientSize.Width, ClientSize.Height);&lt;br /&gt;
    }&lt;br /&gt;
    protected void DoPage(Graphics grfx, Color clr, int cx, int cy) {&lt;br /&gt;
        Metafile mf = new Metafile(strMetafile);&lt;br /&gt;
        for (int y = 0; y &amp;lt; cy; y += mf.Height)&lt;br /&gt;
            for (int x = 0; x &amp;lt; cx; x += mf.Width)&lt;br /&gt;
                grfx.DrawImage(mf, x, y, mf.Width, mf.Height);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Enumerate Metafile==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Drawing.Imaging;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Runtime.InteropServices;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
   &lt;br /&gt;
class EnumMetafile: Form&lt;br /&gt;
{&lt;br /&gt;
     Metafile     mf;&lt;br /&gt;
     Panel        panel = new Panel();&lt;br /&gt;
   &lt;br /&gt;
     public static void Main()&lt;br /&gt;
     {&lt;br /&gt;
          Application.Run(new EnumMetafile());&lt;br /&gt;
     }&lt;br /&gt;
     public EnumMetafile()&lt;br /&gt;
     {&lt;br /&gt;
          Splitter splitter = new Splitter();&lt;br /&gt;
          splitter.Parent = this;&lt;br /&gt;
          splitter.Dock = DockStyle.Left; // Right;&lt;br /&gt;
   &lt;br /&gt;
          panel.Parent = this;&lt;br /&gt;
          panel.Dock = DockStyle.Left;&lt;br /&gt;
          panel.Paint += new PaintEventHandler(PanelOnPaint);&lt;br /&gt;
   &lt;br /&gt;
          Menu = new MainMenu();&lt;br /&gt;
          Menu.MenuItems.Add(&amp;quot;&amp;amp;Open!&amp;quot;, new EventHandler(MenuOpenOnClick));&lt;br /&gt;
     }&lt;br /&gt;
     void MenuOpenOnClick(object obj, EventArgs ea)&lt;br /&gt;
     {&lt;br /&gt;
          OpenFileDialog dlg = new OpenFileDialog();&lt;br /&gt;
          dlg.Filter = &amp;quot;All Metafiles|*.wmf;*.emf|&amp;quot; +&lt;br /&gt;
                       &amp;quot;Windows Metafile (*.wmf)|*.wmf|&amp;quot; +&lt;br /&gt;
                       &amp;quot;Enhanced Metafile (*.emf)|*.emf&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
          if (dlg.ShowDialog() == DialogResult.OK)&lt;br /&gt;
          {&lt;br /&gt;
               mf = new Metafile(dlg.FileName);&lt;br /&gt;
               panel.Invalidate();&lt;br /&gt;
   &lt;br /&gt;
               Graphics grfx = CreateGraphics();&lt;br /&gt;
   &lt;br /&gt;
               grfx.EnumerateMetafile(mf, new Point(0, 0), &lt;br /&gt;
                    new Graphics.EnumerateMetafileProc(EnumMetafileProc));&lt;br /&gt;
   &lt;br /&gt;
               grfx.Dispose();&lt;br /&gt;
          }&lt;br /&gt;
     }&lt;br /&gt;
     bool EnumMetafileProc(EmfPlusRecordType eprt, int iFlags,&lt;br /&gt;
                           int iDataSize, IntPtr ipData, &lt;br /&gt;
                           PlayRecordCallback prc)&lt;br /&gt;
     {&lt;br /&gt;
          if (iDataSize &amp;gt; 0)&lt;br /&gt;
          {&lt;br /&gt;
               byte[] abyData = new Byte[iDataSize];&lt;br /&gt;
               Marshal.Copy(ipData, abyData, 0, iDataSize);&lt;br /&gt;
   &lt;br /&gt;
               foreach (byte by in abyData)&lt;br /&gt;
                    Console.WriteLine(&amp;quot; {0:X2}&amp;quot;, by);&lt;br /&gt;
          }&lt;br /&gt;
          return true;&lt;br /&gt;
     }&lt;br /&gt;
     void PanelOnPaint(object obj, PaintEventArgs pea)&lt;br /&gt;
     {&lt;br /&gt;
          Panel    panel = (Panel) obj;&lt;br /&gt;
          Graphics grfx  = pea.Graphics;&lt;br /&gt;
   &lt;br /&gt;
          if (mf != null)&lt;br /&gt;
               grfx.DrawImage(mf, 0, 0);&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Metafile Page Units==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Drawing.Imaging;&lt;br /&gt;
using System.Drawing.Printing;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
   &lt;br /&gt;
class MetafilePageUnits: Form&lt;br /&gt;
{&lt;br /&gt;
     Metafile mf;&lt;br /&gt;
   &lt;br /&gt;
     public static void Main()&lt;br /&gt;
     {&lt;br /&gt;
          Application.Run(new MetafilePageUnits());&lt;br /&gt;
     }&lt;br /&gt;
     public MetafilePageUnits()&lt;br /&gt;
     {&lt;br /&gt;
          ResizeRedraw = true; &lt;br /&gt;
          Graphics grfx  = CreateGraphics();&lt;br /&gt;
          IntPtr ipHdc = grfx.GetHdc();&lt;br /&gt;
   &lt;br /&gt;
          mf = new Metafile(&amp;quot;MetafilePageUnits.emf&amp;quot;, ipHdc);&lt;br /&gt;
   &lt;br /&gt;
          grfx.ReleaseHdc(ipHdc);&lt;br /&gt;
          grfx.Dispose();&lt;br /&gt;
          grfx = Graphics.FromImage(mf);&lt;br /&gt;
          grfx.Clear(Color.White);&lt;br /&gt;
   &lt;br /&gt;
          grfx.PageUnit = GraphicsUnit.Pixel;&lt;br /&gt;
          Pen pen = new Pen(Color.Black, grfx.DpiX / 72);&lt;br /&gt;
          grfx.DrawRectangle(pen, 0, 0, grfx.DpiX, grfx.DpiY);&lt;br /&gt;
   &lt;br /&gt;
          grfx.PageUnit = GraphicsUnit.Inch;&lt;br /&gt;
          grfx.PageScale = 0.01f;&lt;br /&gt;
          pen = new Pen(Color.Black, 100f / 72);&lt;br /&gt;
          grfx.DrawRectangle(pen, 25, 25, 100, 100);&lt;br /&gt;
   &lt;br /&gt;
          grfx.Dispose();&lt;br /&gt;
     }&lt;br /&gt;
     protected void OnPaint(PaintEventArgs pea)&lt;br /&gt;
     {&lt;br /&gt;
          grfx.DrawImage(mf, 0, 0);&lt;br /&gt;
     }      &lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>