Рисование в чужом окне - C#
Формулировка задачи:
Собственно, я понимаю как рисовать, мне больше интересно 2 момента:
1) Если я просто буду рисовать на окне, то при его перерисовке всё быстро сотрётся.
2) Если же я буду рисовать в bitamap, а потом рисовать его на форме, то всё будет ОЧЕНЬ медленно.
Я так понял, что нужно ставить хук на перерисовку и рисовать самому. Вот с этим моментом не могу найти подробное объяснение.
Решение задачи: «Рисование в чужом окне»
textual
Листинг программы
// Если карта не видна или перекрыты видео то не рисуем её if (full_sc) return; // Диаметр рисуемой точки int POINT_D = imageList_fix_map.Images[1].Height; System.Drawing.Graphics map_g; map = new System.Drawing.Bitmap(pictureBox_map.Width, pictureBox_map.Height); map_g = System.Drawing.Graphics.FromImage(map); map_g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; // текущие размеры карты int map_center_X = pictureBox_map.Width / 2; int map_center_Y = pictureBox_map.Height / 2; # region тактика // Рисуем иконки тактики if (tactic_el.Count > 0) { int offset_tmpXtactic_el = imageList_46x46.Images[0].Width / 2; int offset_tmpYtactic_el = imageList_46x46.Images[0].Height / 2; for (int i = 0; i < tactic_el.Count; ++i) { tactic_el[i]._absX = (int)(tactic_el[i]._relX * (double)pictureBox_map.Width); tactic_el[i]._absY = (int)(tactic_el[i]._relY * (double)pictureBox_map.Height); int tmpXtactic_el = tactic_el[i]._absX; int tmpYtactic_el = tactic_el[i]._absY; map_g.DrawImage(imageList_46x46.Images[tactic_el[i]._index_ico + 12], new Point(tmpXtactic_el - offset_tmpXtactic_el, tmpYtactic_el - offset_tmpYtactic_el)); // Активная иконка тактики if (num_active_tactic == i) map_g.DrawImage(imageList_46x46.Images[18], new Point(tmpXtactic_el - offset_tmpXtactic_el, tmpYtactic_el - offset_tmpYtactic_el)); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д