1)由於未指定Width
和Height
屬性(默認情況下,它們的值設置爲0
),因此不會看到圖像內容。
2)要綁定Center
,RadiusX
,RadiusY
屬性,你應該創建視圖模型(你應該熟悉MVVM模式),然後將其設置爲你的形象DataContext
屬性:
public class ImageViewModel : INotifyPropertyChanged
{
private Point _center;
private int _radiusX;
private int _radiusY;
public Point Center
{
get
{
return _center;
}
set
{
if (_center != value)
{
_center = value;
OnPropertyChanged();
}
}
}
public int RadiusX
{
get
{
return _radiusX;
}
set
{
if (_radiusX != value)
{
_radiusX = value;
OnPropertyChanged();
}
}
}
public int RadiusY
{
get
{
return _radiusY;
}
set
{
if (_radiusY != value)
{
_radiusY = value;
OnPropertyChanged();
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnUpdate(Point center, int radiusX, int radiusY)
{
Center = center;
RadiusX = radiusX;
RadiusY = radiusY;
}
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
當您收到新值,通話視圖模型上的OnUpdate會設置新值,引發PropertyChanged事件,並且視圖將更新。
3)後面的代碼:
myImage.DataContext = new ImageViewModel { Center = new Point(320,480), RadiusX = 120, RadiusY = 120 }
4)XAML:
<Image x:Name="myImage" Source="/someImage.png">
<Image.Clip>
<EllipseGeometry Center="{Binding Point}" RadiusX="{Binding RadiusX}" RadiusY="{Binding RadiusY}" />
</Image.Clip>
</Image>
一個多個查詢,如果我的圖像是640寬度920&高度。那麼如何在EllipseGeometry上確定中心和半徑X/Y? – prdp89
@ prdp89當你獲得新的身高時,只需使用以下值調用OnUpdate:OnUpdate(新點(寬度/ 2,高度/ 2),高度/ 8,高度/ 8)。 – Verbon