Рисование в чужом окне - 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));
}
}