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 высотой. Затем, как определить центр и радиус X/Y по эллиптической геометрии? – prdp89
@ prdp89, когда вы получаете новую высоту и просто вызываете OnUpdate со следующими значениями: OnUpdate (новая точка (ширина/2, высота/2), высота/8, высота/8). – Verbon