Ich brauche 2 am nächsten Kante innerhalb eines picturebox.I'm bis zu einem Punkt zu finden, die folgenden Methode unter Verwendung vonFinding nächste Kante zu einem Punkt in einem PictureBox
void findclosestedges(Point p)
{
//Xedge=1 -- Left Edge is closer to Point 2--Right Edge
int Xedge,Yedge;
//Finding closest Left/Right Edge
if (p.X < (Width - p.X))
{
Xedge = 1;
LaunchOrigin2.closestedge.Text = " ";
LaunchOrigin2.closestedge.Text = LaunchOrigin2.closestedge.Text + " left";
}
else
{
Xedge = 2;
LaunchOrigin2.closestedge.Text = " ";
LaunchOrigin2.closestedge.Text = LaunchOrigin2.closestedge.Text + " right";
}
//Finding closest Top/Bottom Edge
if (p.Y < (Height - p.Y))
{
Yedge = 1;
LaunchOrigin2.closestedge.Text = LaunchOrigin2.closestedge.Text + " top";
}
else
{
Yedge = 2;
LaunchOrigin2.closestedge.Text = LaunchOrigin2.closestedge.Text + " bottom";
}
}
Ist mein Ansatz richtig? Gibt es Vorbehalte für diesen Ansatz?
Bitte um Rat.
Klingt, als ob Sie nach einem Code-Review suchen. Wenn ja, möchten Sie vielleicht stattdessen https://codereview.stackexchange.com fragen. –
Nun, ich denke nicht, dass das Problem richtig eingerichtet wurde. Da ich das ursprüngliche Problem kenne, muss man eigentlich die Ausrichtung eines Rechtecks in einem größeren Rechteck finden. Da das innere Rechteck Text unterschiedlicher Länge und Größe enthält, müssen Sie delta_x_left = innerRect.X und delta_x_right = outer.Right - inner.Right vergleichen. dann setze deltaDelta = delta_x_rechts - delta_x_left. wenn deltaDelta> 0 -> rightAligned sonst linksbündig. Sie können auch für math.abs (delatDelta) y someLimit testen, um eine zentrierte Position zu erkennen. – TaW