画像の一部を選択するための楽器を作っています。私はPictrureBoxを持っています、そしてそれを作る簡単な方法:
void StartPanel(object sender, MouseEventArgs args)
{
xStart = args.X;
yStart = args.Y;
panelStarted = true;
pan.Location = new Point(xStart, yStart);
}
void FinishPanel(object sender, MouseEventArgs args)
{
xFinish = args.X;
yFinish = args.Y;
panelStarted = false;
}
void UpdatePanel(object sender, MouseEventArgs args)
{
if (panelStarted)
{
int x = args.X;
int y = args.Y;
int newxstart = xStart;
int newystart = yStart;
int neww = 0;
int newh = 0;
if (x >= xStart)
neww = x - xStart;
else
{
neww = xStart - x;
newxstart = x;
}
if (y >= yStart)
newh = y - yStart;
else
{
newh = yStart - y;
newystart = y;
}
pan.Size = new Size(neww, newh);
pan.Location = new Point(newxstart, newystart);
}
}
マウスを上下に動かすと、まったく問題ありません。しかし、それを左または上に動かすと、私の領域でまばたきが見られます。つまり、マウスを左または上に動かすと、Panel.Locationが変更されるため、パネルが再描画され、マウスを右または下に動かすと、位置が変更されず、サイズのみが変更されるためです。再描画されず、一部のピクセルのみがパネルに追加されます。このための標準的なソリューションは何ですか?