В WPF этот момент может быть самым сложным. WPF / UWP разработан для MVVM, и я не знаю никого, кроме начинающих, которые программируют за пределами MVVM. И я не могу придумать, как это сделать с MVVM.
PictureBox также является элементом WinForms. Эквивалент WPF называется Изображение .
Подобные навигационные средства не являются тривиальной вещью. Одна из причин, по которой их так мало. Но это сводится к нескольким шагам процесса:
Получите координаты пикселей x и y, по которым щелкнули, также в зависимости от общего размера отображения изображения. Обычно MouseClick Event будет инструментом для этого, но я не могу его найти. MouseDown или LeftMouseDown являются ближайшими событиями.
Если все изображение было показано без масштабирования или обрезки, то теперь это просто математика. Если это было 20% от оси X и 21% от оси Y, довольно легко определить, где 20% от X и 21 от Y находятся на SourceImage.
Если было какое-либо увеличение или кадрирование, это следует учитывать, в противном случае оно равно 2.
. Выровняйте положение пикселя изображения с известными для него координатами.
Часть 1 будет выглядеть следующим образом и должна быть зарегистрирована в событии MouseDown или LeftMouseDown изображения:
private void ContentControl_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
//Unpack the sender
Image source = (Image)Sender;
//Get the click point
Point clickPoint = e.GetPosition(source);
//There is more then 1 height Property in WPF.
//The Actuall one is what you are looking for
//Unfortunately you get doubles for this and int for the other. Consider general advise regarding double math
double ElementHeight = source.ActualHeight;
double ElementWidth = source.ActualWidth;
//Do what you need to find the relative position
//Part 2
}
Надеюсь, кто-то другой может дать вам лучший ответ.