[英]Swing issue: drawing rectangles over the pdf image and keep their size and positions consistent when zooming in and out
關於Swing,我有一個相當緊迫的問題,我已經好多年沒碰到了。
我有一個代碼,允許用戶在pdf文檔(包含在JPanel
)上繪制不同的矩形。 我繪制它們,移動它們,調整它們的大小,選擇它們,甚至在它們上寫文字。 我無法做的是在縮放文檔時保持一致。 當文檔變大時,我繪制的矩形將保持在相同的位置和相同的大小。
我想知道是否有相對簡單的邏輯來跟蹤縮放級別,最重要的是相應地更新矩形。 我可以檢索縮放因子,它是一個浮點數,但是不幸的是,我正在使用Rectangle
對象,該對象對x
, y
, height
和width
使用int
。 將其轉換為Rectangle.Float
會很麻煩,我想將其保存以備不時之需。
我嘗試使用AffineTransform
,但由於某種原因,我對y
坐標錯誤,因此我不太熟悉。 誰能向我解釋:
AffineTransform
是最好的方法,我應該如何處理(如果有的話,可以提供一個很好的解釋的鏈接-如果找不到,我找不到它)? 這是我一直在努力的唯一問題,現在變得有些沮喪。
使用AffineTransform進行縮放:
Graphics
對象G的變換T 轉換為代碼-假設scale
是要按以下方式scale
的值:
@Override
protected void paintComponent(Graphics gr){
super.paintComponent(gr);
Graphics2D g = (Graphics2D)gr;
AffineTransform prevTransform = g.getTransform();
AffineTransform at = new AffineTransform(prevTransform);
at.scale(scale, scale);
g.setTransform(at);
g.drawRect(...);
g.setTransform(prevTransform);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.