У меня есть JPanel, на который я нарисован, и я пытаюсь его получить, чтобы вы могли использовать колесо мыши для «масштабирования» входов и выходов путем изменения переменной масштаб. Прямо сейчас, что происходит, вы можете увеличивать или уменьшать масштаб, но все чертежи сдвигаются вправо и вниз, когда вы увеличиваете масштаб, а затем создаете резервную копию и выходите при масштабировании.Java Graphics2D Панорамирование и масштабирование/преобразование и масштабирование
Я хочу сделать так, что он регулирует, как если бы вы были наезд на точке в центре JPanel, но я не могу понять, как вычислить право смещения перевести на ...
Любого получили представление о том, как это сделать, или еще лучше - более чистый способ достижения этой цели и масштабирования?
я в основном черчения кучу координат, которые пришли из системы, где 0,0 находится в левом нижнем углу и попадают между границами:
xMin = 661208
xMax = 662618
yMin = 4291657
yMax = 4293285
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
double scale = details.getScale();
double xOffset = details.getxOffset();
double yOffset = details.getyOffset();
g2.scale(scale, -scale);
// Dividing offset by scale makes panning 1:1 with the cursor still. yMax to account for the
// fact we needed to flip around the y axis to make it right-side up.
g2.translate((-xMin + xOffset/scale), (-yMax + yOffset/scale));
// Code to draw stuff goes here. It uses coordinates between xMin-xMax and yMin-yMax to draw.
.
.
.
}
Этот вопрос может помочь вам [http://stackoverflow.com/questions/690871/affinetransform-scaling-a-shape-from-its-center](http://stackoverflow.com/questions/690871/affinetransform -scaling-а-образную форму из-ее-центра) – Pierre