У меня есть следующая проблема: у меня есть прямоугольник с 10 строками и 10 столбцами. Когда я нажимаю на квадрат, я должен нарисовать букву «X». Ну, когда я нажимаю на правую половину или на нижнюю половину квадрата, «X» рисуется в следующем правом квадрате, соответственно, на нижнем квадрате. Что мне делать, когда я нажимаю где-нибудь на квадрате, «X» нарисован на соответствующем квадрате?Как правильно позиционировать «X» в прямоугольнике?
Мой код:
private void panel2_MouseClick(object sender, MouseEventArgs e)
{
txtX.Text = Convert.ToString(e.X);
txtY.Text = Convert.ToString(e.Y);
var data = File.ReadAllLines(handleClinet.GetPath().Replace("Client","Server"));
if (e.X >= 20 && e.Y >= 20 && e.X <= 220 && e.Y <= 220)
{
var graph = (sender as Panel).CreateGraphics();
const int redInt = 255; //255 is example, give it what u know
const int blueInt = 255; //255 is example, give it what u know
const int greenInt = 255; //255 is example, give it what u know
var p = new Pen(Color.FromArgb(redInt, blueInt, greenInt));
var newEx = (int)Math.Round(
(e.X/(double)20), MidpointRounding.AwayFromZero) * 20;
var newEy = (int)Math.Round(
(e.Y/(double)20), MidpointRounding.AwayFromZero) * 20;
RectangleF rectF1 = new RectangleF(newEx, newEy, 20,20);
graph.DrawString("X", new System.Drawing.Font("Arial", 16), Brushes.Blue, rectF1);
}
}
И мой прямоугольник как:
Большое спасибо заранее!
Возможно, проблема заключается в том, где вы используете «MidpointRounding.AwayFromZero». Мне кажется, что если вы на полпути через квадрат, когда будете нажимать, это приведет к переходу на следующий квадрат. –
Я думал, что это может быть источником моей проблемы. Но что мне делать, чтобы это исправить? – Ionut
См. Мое предложение в ответе –