c# .net winforms operators point

c# - ¿Cómo hacer que el operador+funcione mientras se suman dos puntos?



.net winforms (2)

Leí la documentación de System.Drawing.Point (vinculada en la respuesta de Cody Gray) y tiene un método de instancia Offset . Ese método muta el Point actual (¡los diseñadores eligieron hacer de Point una estructura mutable!).

Así que aquí hay un ejemplo:

var p1 = new Point(10, 20); var p2 = new Point(6, 7); p1.Offset(p2); // will change p1 into the sum!

En el mismo documento, también veo una conversión explícita de Point to Size . Por lo tanto, intente esto:

var p1 = new Point(10, 20); var p2 = new Point(6, 7); Point pTotal = p1 + (Size)p2; // your solution?

¿Hay alguna manera de hacer que el operador + trabaje para el objeto Point?

Tome, por ejemplo, este pequeño fragmento:

this.cm1.Show((MouseEventArgs)e.Location+this.i_rendered.Location);

Verán, trato de agregar dos puntos el uno al otro. Simplemente no funciona (lo que se esperaba). Me encantaría que esto funcionara.

¿Algunas ideas?


No va a suceder de la manera que esperas. La única sobrecarga que proporciona la estructura de Point para el operador + (adición) es aquella que traduce las coordenadas del Point por un Size .

No hay forma de agregar dos estructuras de Point juntas, y ni siquiera estoy seguro de lo que eso significaría.

No pierda demasiado tiempo averiguándolo, ya sea porque no puede escribir métodos de extensión que sobrecarguen a los operadores .

Afortunadamente, en un lenguaje compilado, no hay ninguna penalización por dividir el código en varias líneas. Para que pueda volver a escribir su código de la siguiente manera:

Point newLocation = new Point(e.Location.X + this.i_rendered.Location.X, e.Location.Y + this.i_rendered.Location.Y); this.cm1.Show(newLocation);

Alternativamente, podría usar el método Offset , pero no estoy convencido de que mejore la legibilidad.