Ich habe ein Bild, auf das Sie 2 Punkte klicken und es erstellt eine Linie zwischen jedem Punkt. Am Ende verlangt die Abteilung nach der Möglichkeit, die Länge dieser Linien und wo diese Linien auftreten zu berechnen. Sie tun dies derzeit per Hand mit Papier/Stift/Lineal. Dies ist eines der Bilder, mit denen ich arbeite.Gibt es eine bessere Möglichkeit, Bildklickregionen zu bearbeiten?
Diese Risse in der Mitte sind "Bereich 7" betrachtet.
Also brauchte ich einen Weg zu, neben dem Speichern meiner x & y Ort, um die Zeilen später zu messen, auch den Ort, die sie auf meiner Liste aufgetreten sind. Unten ist der einzige Weg, den ich wusste, um dies zu tun, aber es erweist sich als eher unordentlich. Da das Bild kein exaktes Quadrat oder Rechteck ist, gibt es viele überlappende Bereiche und viele Bereiche, in denen es Lücken gibt, so dass die Bereiche nicht sehr gut abgedeckt werden.
Gibt es einen besseren Weg, dies zu tun? (Zur Zeit verwende ich nur einen messagebox zu zeigen, wo ich geklickt habe, habe ich nicht so weit ging, mit den Daten etwas zu tun noch, bis ich dieses Recht zu bekommen.)
if (e.Button.Equals(MouseButtons.Left))
{
Rectangle zone1 = new Rectangle(35, 30, 770, 30);
if (zone1.Contains(e.Location))
{
MessageBox.Show("Zone1");
}
Rectangle zone2 = new Rectangle(890, 40, 330, 300);
if (zone2.Contains(e.Location))
{
MessageBox.Show("Zone2");
}
Rectangle zone3 = new Rectangle(340, 340, 850, 60);
if (zone3.Contains(e.Location))
{
MessageBox.Show("Zone3");
}
Rectangle zone4 = new Rectangle(100, 25, 75, 300);
if (zone4.Contains(e.Location))
{
MessageBox.Show("Zone4");
}
//4-1 trying to cover areas missed in zone4
Rectangle zone41 = new Rectangle(255, 270, 120, 240);
if (zone41.Contains(e.Location))
{
MessageBox.Show("Zone4-1");
}
Rectangle zone5 = new Rectangle(310, 100, 180, 150);
if (zone5.Contains(e.Location))
{
MessageBox.Show("Zone5");
}
//5-1 trying to cover areas missed in zone5
Rectangle zone51 = new Rectangle(220, 80, 60, 45);
if (zone51.Contains(e.Location))
{
MessageBox.Show("Zone5-1");
}
Rectangle zone6 = new Rectangle(635, 35, 250, 210);
if (zone6.Contains(e.Location))
{
MessageBox.Show("Zone6");
}
}
Wird das Bild aus Vektordaten generiert, auf die Sie Zugriff haben, oder wird von Ihnen im Wesentlichen erwartet, dass sie Feature-Erkennung durchführen? Wenn Letzteres, ist dies eine einmalige Sache, oder muss es automatisiert werden? Wenn es sich um eine einmalige Situation handelt, können Sie manuell ein Bild für jede Region erstellen (z. B. jede Region für das entsprechende Bild schwarz ausfüllen) und pro Pixel testen, ob der Ort, auf den der Nutzer geklickt hat, in dieser Region liegt. Die Antwort hängt sehr von Ihren Einschränkungen ab. – adv12
Re: einschließlich "C#" im Titel, eigentlich dachte ich, dass das verpönt war. Aber vielleicht haben sich die "Regeln" geändert. – adv12
_ "Bearbeiten, um C# in den Titel aufzunehmen, wie angefordert" _ - das ist seltsam, weil der [allgemeine Konsens ist, dass Tags nicht in Titeln enthalten sein sollten] (http://meta.stackexchange.com/questions/19190/should- questions-include-tags-in-the-titles) – stuartd