我正在尝试在新的 WPF 项目中重用我很久以前在 Windows 窗体中实现的类。此类重写OnRender
使用Graphics
在窗体上绘制各种对象的对象的方法。现在我在 WPF 中使用了我的类,我已经用Graphics
对象替换了DrawingContext
对象,但是Graphics
该类的某些方法没有实现。特别是方法FillPie
, FillEllipse
,DrawBeziers
是我需要的。是否存在实现这些方法的类?我怎样才能实现这些方法?
问问题
960 次
1 回答
1
这是一个简单的例子,说明这样的事情如何在实践中发挥作用。
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Width="500"
Height="500">
<StackPanel>
<Slider Name="PositionSlider"
Margin="10"
Maximum="50"
Minimum="1"
Value="10" />
<Canvas Width="300" Height="300">
<Path Fill="Gold"
Stroke="Black"
StrokeThickness="1">
<Path.Data>
<EllipseGeometry Center="150,150"
RadiusX="{Binding ElementName=PositionSlider,
Path=Value}"
RadiusY="{Binding ElementName=PositionSlider,
Path=Value}" />
</Path.Data>
</Path>
</Canvas>
</StackPanel>
</Window>
上面的 WPF 显示了一个简单的滑块和一个圆圈。圆的半径数据绑定到滑块的值。当您移动滑块时,圆圈会变大或变小。在您的旧世界中,当滑块(即您的缩放状态发生变化)时,您将获得一个重绘,您将在其中绘制一个更大更小的圆圈。但在 WPF 世界中,这是由依赖属性和数据绑定处理的。
上面的示例非常基础,您可以通过使用值转换器和实现依赖属性的对象和 INotifyPropertyChanged 进行多重绑定来做更复杂的事情,所有这些都无法在一个答案中解释。
于 2012-09-11T16:20:44.817 回答