Я рисую Rectangle на PictureBox у которого SizeMode = Zoom. Как мне при изменении размеров PictureBox, изменять размер и позицию Rectangle? Как применить Zoom к Rectangle? Как получить новые координаты и размер? Проект winforms.
private void box_Paint(object sender, PaintEventArgs e) {
foreach (Marker marker in markers) {
using (var brush = new SolidBrush(Color.Red) {
e.Graphics.FillRectangle(brush, marker.getZone());
}
}
}
Мне нужно записывать координаты относительно PictureBox.Image.Size?
Прежде всего, нужно определить для каких размеров PictureBox заданы размеры маркеров, которые вы рисуете.
Если, например, маркеры задаются перед показом PictureBox и никогда не меняются, то начальные размеры PictureBox можно считать опорной точкой. Для этого их необходимо сохранить в переменную.
При изменении размеров PictureBox, у нас получаются две пропорции:
old_picturebox_width/new_picturebox_width=marker_width/rectangle_width
old_picturebox_height/new_picturebox_height=marker_height/rectangle_height
Таким образом, чтобы определить факторы, на который следует умножать оригинальные ширину и высоту маркера, надо всего лишь разделить оригинальные ширину и высоту PictureBox на его текущие ширину и высоту (и не забыть проверку на ноль; если ноль - делить нельзя, но и рисовать слава богу тоже не надо).
Если маркеры задаются пользователем (то есть изменяются), тогда лучше поступить по другому. Вычислять размеры маркеров нужно не непосредственно перед их отрисовкой, а сразу после изменения размеров PictureBox. Для этого, надо запоминать предыдущие размеры PictureBox, при изменении размеров заменять предыдущие маркеры вновь посчитанными с учетом пропорции, и запоминать текущие размеры PictureBox, чтобы использовать их когда размеры PictureBox изменятся снова.
Из-за чего может быть следующее: скрипт висит на объекте, при старте сцены он выключается ? то есть enable = false, манипуляции с активностью скрипта...
Добрый деньВозникла проблема с Unity3D, пытаюсь создать копию объекта в заданной точке
В xaml создаю изображение и задаю ему нужную высоту: