gpt4 book ai didi

c# - System.Drawing.Point' 到 'System.Windows.Point 的转换器

转载 作者:行者123 更新时间:2023-11-30 20:50:04 26 4
gpt4 key购买 nike

我试图在 WPF 中绘制几个实体。我的集合包含 System.Drawing.Rectangle 对象,当我尝试访问 WPF XAML 中这些对象的位置时出现以下错误

Cannot create default converter to perform 'one-way' conversions between types 'System.Drawing.Point' and 'System.Windows.Point'. Consider using Converter property of Binding

我知道我必须使用一些值转换器。你能指导我如何将 System.Drawing.Point' 转换为 'System.Windows.Point 吗?

更新:

下面的代码给出了一些异常

public class PointConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
System.Windows.Point pt = (Point)(value);
return pt;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

XAML:

<PathFigure StartPoint= "{Binding BoundingRect.Location, Converter={StaticResource PointConverter}}">

最佳答案

我猜您遇到了 InvalidCastException,您不能将一种类型转换为另一种类型,除非它们之间存在隐式或显式转换。记住 cast 是不同的,convert 是不同的。以下代码将 System.Drawing.Point 转换为 System.Windows.Point,反之亦然。

public class PointConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
System.Drawing.Point dp = (System.Drawing.Point)value;
return new System.Windows.Point(dp.X, dp.Y);
}

public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
System.Windows.Point wp = (System.Windows.Point) value;
return new System.Drawing.Point((int) wp.X, (int) wp.Y);
}
}

如果 System.Drawing.Point 来自 Windows 窗体鼠标事件,例如单击事件,则不能直接转换为 System.Drawing.Point System.Windows.Point 以这种方式,因为每个坐标系可能不同。参见 https://stackoverflow.com/a/19790851/815724获取更多信息。

关于c# - System.Drawing.Point' 到 'System.Windows.Point 的转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22827412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com