1

我正在尝试在新的 WPF 项目中重用我很久以前在 Windows 窗体中实现的类。此类重写OnRender使用Graphics在窗体上绘制各种对象的对象的方法。现在我在 WPF 中使用了我的类,我已经用Graphics对象替换了DrawingContext对象,但是Graphics该类的某些方法没有实现。特别是方法FillPie, FillEllipse,DrawBeziers是我需要的。是否存在实现这些方法的类?我怎样才能实现这些方法?

4

1 回答 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 回答