Graphics类的方法在哪里?

时间:2012-09-11 14:54:14

标签: c# wpf winforms

我正在尝试重用我在很久以前在Windows窗体中实现的新类WPF项目。此类将覆盖使用在表单上绘制各种对象的对象OnRender的{​​{1}}方法。既然我在WPF中使用了我的类,我已经用Graphics对象替换了Graphics对象,但是没有实现DrawingContext类的某些方法。特别是方法GraphicsFillPieFillEllipse是我需要的方法。 是否存在实现这些方法的类?我该如何实现这些方法?

1 个答案:

答案 0 :(得分: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世界中,这依赖于依赖属性和数据绑定。

enter image description here

上面的例子非常简单,您可以通过使用值转换器和实现依赖项属性的对象进行多绑定绑定以及INotifyPropertyChanged来执行更复杂的操作,所有这些都无法在一个答案中解释。