Поясните, пожалуйста, поэтапно алгоритм действий.
В данный момент у меня в Form1.cs при маус-муве вызывается метод рисования:
Код
public void redraw()
{
using (Graphics g = this.panel1.CreateGraphics())
{
Pen pen = new Pen(Color.Blue, 1);
Brush brush = new SolidBrush(Color.Violet);
g.Clear(Color.White);
for (int i = 0; i < mapheight; i++)
{
for (int j = 0; j < mapwidth; j++)
{
if (collis[i, j] != 0) g.FillRectangle(brush, i * 32, j * 32, 32, 32);
else
if (grid == true) g.DrawRectangle(pen, i * 32, j * 32, 32, 32);
}
}
if (imgbuff != null)
{
for (int i = 0; i < numtile; i++)
{
g.DrawImage(naborpic [idxtile[i]], new Point(coordtileX[i]-(int)cumX, coordtileY[i]-(int)cumY));
}
g.DrawImage(imgbuff, new Point(mX * 32, mY * 32), 0.5f);
pen = new Pen(Color.Red, 1);
int h = imgbuff.Size.Height;
int w = imgbuff.Size.Width;
g.DrawRectangle(pen, mX * 32, mY * 32, w, h);
}
pen.Dispose();
}
}
Жутко мерцает.
Порекомендовали переопределить метод onPaint.
Но я чего-то совсем не понимаю как это сделать.
Вот правой кнопкой мыши по проекту "добавить класс".
Содержимое которого.
Код
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public class MyDrawPanel : UserControl
{
public MyDrawPanel()
{
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true);
}
protected override void OnPaint(PaintEventArgs e)
{
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// MyDrawPanel
//
this.Name = "MyDrawPanel";
this.Size = new System.Drawing.Size(800, 600);
this.ResumeLayout(false);
}
}
}
А чего делать дальше ?