Is there any way to get the +
operator to work for the Point object?
Take, for example, this tiny snippet:
this.cm1.Show((MouseEventArgs)e.Location+this.i_rendered.Location);
You see, I try to add two points to eachother. It just does not work (which was expected). I'd love to get this working.
Any ideas?
I read the documentation for System.Drawing.Point
(linked in Cody Gray's answer), and it has an instance method Offset
. That method mutates the current Point
(the designers chose to make Point
a mutable struct!).
So here's an example:
var p1 = new Point(10, 20);
var p2 = new Point(6, 7);
p1.Offset(p2); // will change p1 into the sum!
In the same doc I also see an explicit conversion from Point
to Size
. Therefore, try this:
var p1 = new Point(10, 20);
var p2 = new Point(6, 7);
Point pTotal = p1 + (Size)p2; // your solution?
It's not going to happen the way you expect. The only overload that the Point
structure provides for the +
(addition) operator is one that translates the coordinates of the Point
by a Size
.
There's no way to add two Point
structures together, and I'm not even sure what that would mean.
Don't waste too much time figuring it out, either, considering that you cannot write extension methods that overload operators.
Fortunately, in a compiled language, there's no penalty for splitting up code into multiple lines. So you can re-write your code as follows:
Point newLocation = new Point(e.Location.X + this.i_rendered.Location.X,
e.Location.Y + this.i_rendered.Location.Y);
this.cm1.Show(newLocation);
Alternatively, you could use the Offset
method, but I'm not convinced that enhances readability.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With