相加 System.Drawing.Points
Adding together System.Drawing.Points
我遇到了以下使用 System.Drawing.Size
class 的构造函数添加两个 System.Drawing.Point 对象的代码。
// System.Drawing.Point mpWF contains window-based mouse coordinates
// extracted from LParam of WM_MOUSEMOVE message.
// Get screen origin coordinates for WPF window by passing in a null Point.
System.Windows.Point originWpf = _window.PointToScreen(new System.Windows.Point());
// Convert WPF doubles to WinForms ints.
System.Drawing.Point originWF = new System.Drawing.Point(Convert.ToInt32(originWpf.X),
Convert.ToInt32(originWpf.Y));
// Add WPF window origin to the mousepoint to get screen coordinates.
mpWF = originWF + new Size(mpWF);
我认为在最后一个语句中使用 + new Size(mpWF)
是一种 hack,因为当我阅读上面的代码时,它减慢了我的速度,因为我没有立即理解发生了什么。
我尝试按如下方式解构最后一条语句:
System.Drawing.Point tempWF = (System.Drawing.Point)new Size(mpWF);
mpWF = originWF + tempWF; // Error: Addition of two Points not allowed.
但它不起作用,因为没有为两个 System.Drawing.Point
对象定义加法。有没有其他比原始代码更直观的方法对两个Point
对象进行加法?
为其创建一个Extension Method:
public static class ExtensionMethods
{
public static Point Add(this Point operand1, Point operand2)
{
return new Point(operand1.X + operand2.X, operand1.Y + operand2.Y);
}
}
用法:
var p1 = new Point(1, 1);
var p2 = new Point(2, 2);
var reult =p1.Add(p2);
我遇到了以下使用 System.Drawing.Size
class 的构造函数添加两个 System.Drawing.Point 对象的代码。
// System.Drawing.Point mpWF contains window-based mouse coordinates
// extracted from LParam of WM_MOUSEMOVE message.
// Get screen origin coordinates for WPF window by passing in a null Point.
System.Windows.Point originWpf = _window.PointToScreen(new System.Windows.Point());
// Convert WPF doubles to WinForms ints.
System.Drawing.Point originWF = new System.Drawing.Point(Convert.ToInt32(originWpf.X),
Convert.ToInt32(originWpf.Y));
// Add WPF window origin to the mousepoint to get screen coordinates.
mpWF = originWF + new Size(mpWF);
我认为在最后一个语句中使用 + new Size(mpWF)
是一种 hack,因为当我阅读上面的代码时,它减慢了我的速度,因为我没有立即理解发生了什么。
我尝试按如下方式解构最后一条语句:
System.Drawing.Point tempWF = (System.Drawing.Point)new Size(mpWF);
mpWF = originWF + tempWF; // Error: Addition of two Points not allowed.
但它不起作用,因为没有为两个 System.Drawing.Point
对象定义加法。有没有其他比原始代码更直观的方法对两个Point
对象进行加法?
为其创建一个Extension Method:
public static class ExtensionMethods
{
public static Point Add(this Point operand1, Point operand2)
{
return new Point(operand1.X + operand2.X, operand1.Y + operand2.Y);
}
}
用法:
var p1 = new Point(1, 1);
var p2 = new Point(2, 2);
var reult =p1.Add(p2);