Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ .NET Compact FrameworkΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 109

Автор Иво Π‘Π°Π»ΠΌΡ€Π΅

 //ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Pen, ImageAttribute, Font ΠΈ Brush.

 //

 //Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊΠΎ всСм общСдоступным Ρ‡Π»Π΅Π½Π°ΠΌ,

 //Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ доступа Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

 //=========================================================

 public static Pen g_blackPen;

 public static Pen g_whitePen;

 public static System.Drawing.Imaging.ImageAttributes g_ImageAttribute;

 private static bool s_alreadyInitialized;

 public static Font g_boldFont;

 public static Font g_smallTextFont;

 public static Brush g_greenBrush;

 public static Brush g_yellowBrush;

 public static Brush g_redBrush;

 public static Brush g_blackBrush;


 //==============================================================

 //Π­Ρ‚Π° функция Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° Π΄ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ доступа ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΈΠ·

 //Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

 //==============================================================

 public static void InitializeGlobals() {

  if (s_alreadyInitialized == true) {

   return;

  }

  g_blackPen = new System.Drawing.Pen(Color.Black);

  g_whitePen = new System.Drawing.Pen(Color.White);

  g_ImageAttribute = new  System.Drawing.Imaging.ImageAttributes();

  g_ImageAttribute.SetColorKey(Color.White, Color.White);

  g_boldFont = new Font(FontFamily.GenericSerif, 10, FontStyle.Bold);

  g_smallTextFont = new Font(FontFamily.GenericSansSerif, 8, FontStyle.Regular);

  g_blackBrush = new SolidBrush(System.Drawing.Color.Black);

  g_greenBrush = new SolidBrush(System.Drawing.Color.LightGreen);

  g_yellowBrush = new SolidBrush(System.Drawing.Color.Yellow);

  g_redBrush = new SolidBrush(System.Drawing.Color.Red);

  s_alreadyInitialized = true;

 }


 //=========================================================

 //ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ 3: Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ массив связанных рСсурсов.

 // ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСсурсы локально, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ…

 // запросах Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π»ΠΈΡΡŒ (понапрасну) ΠΈΡ… Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹.

 //=========================================================

 private static Bitmap m_CaveMan_Bitmap1;

 private static Bitmap m_CaveMan_Bitmap2;

 private static Bitmap m_CaveMan_Bitmap3;

 private static Bitmap m_CaveMan_Bitmap4;

 private static System.Collections.ArrayList m_colCaveManBitmaps;


 //--------------------------------------------------

 //Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ массив ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для спрайта

 //--------------------------------------------------

 public static System.Collections.ArrayList g_CaveManPictureCollection() {

  //Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ лишь Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΌΡ‹ ΠΈΡ… Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ

  if (m_CaveMan_Bitmap1 == null) {

   //-----------------------------------------------------------------

   //Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ изобраТСния. Π­Ρ‚ΠΈ изобраТСния хранятся Π² Π²ΠΈΠ΄Π΅

   //встроСнных рСсурсов Π² нашСм Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

   //

   //Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² осущСствляСтся Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ

   //ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π΅ ΠΏΡ€ΠΎΡ‰Π΅ (Π½Π°ΠΌ достаточно лишь ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ

   //имя Ρ„Π°ΠΉΠ»Π° Π² конструкторС растровых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ).

   //------------------------------------------------------------------


   //ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° Π½Π°ΡˆΡƒ Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ сборку

   System.Reflection.Assembly thisAssembly = System.Reflection.Assembly.GetExecutingAssembly();

   //ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ имя сборки

   System.Reflection.AssemblyName thisAssemblyName = thisAssembly.GetName();

   string assemblyName = thisAssemblyName.Name;


   //Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ изобраТСния Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈΠ· нашСй сборки

   m_CaveMan_Bitmap1 = new System.Drawing.Bitmap(

    thisAssembly.GetManifestResourceStream(

    assemblyName + ".Hank RightRunl.bmp"));

   m_CaveMan_Bitmap2 = new System.Drawing.Bitmap(

    thisAssembly.GetManifestResourceStream(

    assemblyName + ".Hank_RightRun2.bmp"));

   m_CaveMan_Bitmap3 = new System.Drawing.Bitmap(

    thisAssembly.GetManifestResourceStream(

    assemblyName + ".Hank_LeftRun1.bmp"));

   m_CaveMan_Bitmap4 = new System.Drawing.Bitmap(

    thisAssembly.GetManifestResourceStream(

    assemblyName + ".Hank_LeftRun2.bmp"));


   //Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ

   m_colCaveManBitmaps = new System.Collections.ArrayList();

   m_colCaveManBitmaps.Add(m_CaveMan_Bitmap1);

   m_colCaveManBitmaps.Add(m_CaveMan_Bitmap2);

   m_colCaveManBitmaps.Add(m_CaveMan_Bitmap3);

   m_colCaveManBitmaps.Add(m_CaveMan_Bitmap4);

  }

  //Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ

  return m_colCaveManBitmaps;

 }

} //ΠšΠΎΠ½Π΅Ρ† класса

Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ распрСдСлСния памяти для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ рисования

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ размСщСния ΠΈ уничтоТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² памяти являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ графичСского ΠΊΠΎΠ΄Π°. ГрафичСский ΠΊΠΎΠ΄ часто выполняСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ вызываСтся. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ графичСскиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ памяти, Π° Ρ‚Π°ΠΊΠΆΠ΅ систСмныС рСсурсы, с ΠΈΡ… обслуТиваниСм связаны ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большиС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы. Если вашС мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ распрСдСляСт ΠΈ освобоТдаСт ΠΏΠ°ΠΌΡΡ‚ΡŒ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния, Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ΠΌΠΈΠ½ΡƒΠ΅ΠΌΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти, Ρ‡Ρ‚ΠΎ обусловит Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ частого выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎ сборкС мусора, Π·Π°ΠΌΠ΅Π΄Π»ΡΡŽΡ‰ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния. Π’ связи с этим Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ участки ΠΊΠΎΠ΄Π°, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ распрСдСлСния памяти для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² процСссС Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. ОсобСнно это касаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², связанных с графичСскими рСсурсами, Π½ΠΎ остаСтся справСдливым ΠΈ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, коллСкциям, массивам, строкам), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅.

Π’ частности, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с этой Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния распрСдСлСниС памяти для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². 

β–  ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Bitmap. Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ситуации, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² качСствС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° для изобраТСния ΠΈΠ»ΠΈ части изобраТСния, создаваСмых вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Bitmap. Если Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ трСбуСтся пространство для рисования, Ρ‚ΠΎ Π² этом Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ; СдинствСнноС, Ρ‡Π΅Π³ΠΎ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ β€” Ρ‚Π°ΠΊ это создания ΠΈ уничтоТСния ΠΌΠ½ΠΎΠ³ΠΈΡ… Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… рисования. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ пространство, ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π² качСствС ΠΎΠ±Ρ‰Π΅Π³ΠΎ рСсурса, Ρ‡Π΅ΠΌ нСсти Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹, связанныС с Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΌ созданиСм ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ памяти Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ наибольшСго Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ вашим ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌ (Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ). Если Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ для рисования, Ρ‚ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈ быстро ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Graphics.Clear(). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ продСмонстрировано Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π°, часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ растровыС изобраТСния ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² памяти. Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ загруТался Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр растрового изобраТСния. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… экзСмпляров ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ напрасному Ρ€Π°ΡΡ…ΠΎΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов памяти. 

β–  ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Graphics. Если трСбуСтся постоянно ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ растровоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ это, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, приходится Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ пСрСрисовкС ΠΊΠ°Π΄Ρ€ΠΎΠ² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля, Ρ‚ΠΎ, вСроятно, наряду с Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ экранным ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ цСлСсообразно ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Graphics внСэкранных ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠŸΠΎΡΡ‚ΡƒΠΏΠ°Ρ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚Π΅ΡΡŒ ΠΎΡ‚ нСобходимости Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ размСщСния этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² памяти ΠΈ ΠΈΡ… удалСния. НС распрСдСляйтС Π² Ρ†ΠΈΠΊΠ»Π°Ρ… рисования ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Graphics растровых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°; Π² идСальном случаС слСдуСт Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ размСщСния ΠΈ удалСния Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ². To ΠΆΠ΅ самоС касаСтся ΠΈ Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ рисованиС; ΠΊΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Graphics, Π° Π½Π΅ создавайтС ΠΈΡ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π·Π°Π½ΠΎΠ²ΠΎ. Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Graphics Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅Ρ… Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для создания ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ; Ссли битовая ΠΊΠ°Ρ€Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ лишь Π² качСствС источника ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Graphics для Π½Π΅Π΅ Π²Π°ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π½ΡƒΠΆΠ΅Π½. 

β–  ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Font, Brush, Pen, ImageAttribute. РаспространСнной ошибкой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠ±ΡŠΡΡΠ½ΠΈΠΌΡ‹, являСтся ΠΈΡ… Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΡƒΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ рСсурсов Π½Π° ΠΌΠΈΠΊΡ€ΠΎΡƒΡ€ΠΎΠ²Π½Π΅, Π½Π΅ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ΡΡ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΈΡ… использования Π½Π° ΠΌΠ°ΠΊΡ€ΠΎΡƒΡ€ΠΎΠ²Π½Π΅. Π’ процСссС создания графичСского изобраТСния Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ, скаТСм, Ρ‡Π΅Ρ€Π΅Π· 30 ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… этапов, Π² Ρ…ΠΎΠ΄Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€ΠΈΡΡƒΡŽΡ‚ΡΡ Π»ΠΈΠ½ΠΈΠΈ, Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ эллипсы, создаСтся тСкст ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ использования Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€ΡŒΠ΅Π², кистСй, ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Pen, Brush, Font, Π° Ссли Π² Π΄Π΅Π»ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ ΠΈ маски прозрачности, Ρ‚ΠΎ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ImageAttribute. Π’ случаС ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств ситуация усугубляСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² .NET Compact Framework, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ .NET Framework, статичСскиС вСрсии Π±Π°Π·ΠΎΠ²Ρ‹Ρ… кистСй ΠΈ ΠΏΠ΅Ρ€ΡŒΠ΅Π² Π½Π΅ прСдусмотрСны. Π’Π°ΠΊ, Π² вСрсии NET Framework, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ System.Drawing.Pens.Blue ΠΈ System.Drawing.Brushes.DarkOrange, Π½ΠΎ Π² NET Compact Framework эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ приходится Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ. РСшСниС этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² создании собствСнного глобального Π½Π°Π±ΠΎΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Pen ΠΈ Brush, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π½ΡƒΠΆΠ΄ рисования Π²ΠΎ всСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Ρ†ΠΈΠΊΠ»Ρ‹ рисования Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, обращая особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° случаи ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ создания ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… рСсурсов ΠΈ избавляясь ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ избыточности Π² ΠΊΠΎΠ΄Π΅. Если Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ рисования, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠ°ΠΊ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, ΠΏΠ΅Ρ€ΡŒΡ, кисти ΠΈ маски прозрачности, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ рисования, Π»ΠΈΠ±ΠΎ глобально ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.