Как я должен перевести из экранных пространственных координат для обработки изображений пространственных координат в WinForms PictureBox?

Согласно http://blog.dygraphs.com/2012/03/javascript-and-dates-what-mess.html формат «yyyy / mm / dd» решает обычные проблемы , Он говорит: «Придерживайтесь« YYYY / MM / DD »для строк даты, когда это возможно. Это универсально поддерживается и недвусмысленно. В этом формате все времена являются локальными». Я установил тесты: http://jsfiddle.net/jlanus/ND2Qg/432/ Этот формат: + избегает двусмысленности порядка дня и месяца, используя порядок ymd и 4-значный год + избегает UTC против локальной проблемы, не соответствующей формату ISO, с помощью косой черты + danvk, dygraphs , говорит, что этот формат хорош во всех браузерах.

17
задан mattytommo 4 May 2012 в 09:53
поделиться

2 ответа

В зависимости от масштабирования относительный пиксель изображения мог быть где угодно во многих пикселях. Например, если изображение значительно уменьшено, пиксель 2, 10 мог бы представить 2, 10 полностью до 20, 100), таким образом, необходимо будет сделать математику сами и взять на себя полную ответственность за любые погрешности! :-)

2
ответ дан 30 November 2019 в 14:41
поделиться

Я волновал просто реализацию перевода вручную. Код не слишком плохо, но это действительно оставляло меня жалеть, что они не оказали поддержку для него непосредственно. Я видел, что такой метод был полезен при большом количестве различных обстоятельств.

я предполагаю вот почему, что они добавили дополнительные методы :)

В псевдокоде:

// Recompute the image scaling the zoom mode uses to fit the image on screen
imageScale ::= min(pictureBox.width / image.width, pictureBox.height / image.height)

scaledWidth  ::= image.width * imageScale
scaledHeight ::= image.height * imageScale

// Compute the offset of the image to center it in the picture box
imageX ::= (pictureBox.width - scaledWidth) / 2
imageY ::= (pictureBox.height - scaledHeight) / 2

// Test the coordinate in the picture box against the image bounds
if pos.x < imageX or imageX + scaledWidth < pos.x then return null
if pos.y < imageY or imageY + scaledHeight < pos.y then return null

// Compute the normalized (0..1) coordinates in image space
u ::= (pos.x - imageX) / imageScale
v ::= (pos.y - imageY) / imageScale
return (u, v)

Для получения положения пикселя в изображении Вы просто умножились бы пиксельными размерами действительного образа, но нормализованные координаты позволяют Вам обращаться к точке исходного респондента о разрешении неоднозначности в зависимости от конкретного случая.

6
ответ дан 30 November 2019 в 14:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: