如何在Java Swing中使用定時器平滑地將影像旋轉90度?
如何在 Swing 逐漸旋轉影像?
此問題涉及 Java Swing 中點擊按鈕時旋轉影像的問題。目標是讓影像平滑旋轉到 90 度。
問題詳細資訊:
提供的程式碼包含幾個類別:RotateButtonSSCE、CrossingPanelSSCE、VisualizationPanelSSCE 和一個 main TestGUISSCE 中的方法。 RotateButtonSSCE 類別建立一個觸發旋轉的按鈕,CrossingPanelSSCE 類別包含需要旋轉的圖像,VisualizationPanelSSCE 類別提供用於繪製圖像的表面。
嘗試逐漸旋轉影像時會出現此問題。該程式碼嘗試使用計時器來呼叫增量旋轉圖像的方法來實現此目的,但它似乎沒有按預期工作。
答案:
除了@tulskiy 建議的更正之外,還需要注意的是,給定的程式碼存在一些可能導致該問題的結構問題。以下是關鍵觀察和建議:
- 使用頂級或嵌套類: SSCCE(簡短、自包含、正確(可編譯)、示例)應該易於理解不需要創建多個公共類別。為了方便起見,請考慮使用頂層(包私有)或巢狀類別。
- 在事件調度執行緒上建構 GUI: 總是在事件調度執行緒上建立 GUI 以避免執行緒問題。
- 利用paintComponent方法:在這個例子中,CrossingPanelSSCE中的paintComponent()方法負責顯示影像。若要逐漸旋轉影像,您可以使用 AffineTransform 類別來變更圖形上下文的變換。透過應用適當的旋轉和平移,可以實現平滑的旋轉效果。
修訂的代碼摘錄:
這裡是 CrossingPanelSSCE類別旋轉的修訂部分影像使用AffineTransform:
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import javax.swing.*; public class CrossingPanelSSCE extends JPanel { // ... other code private BufferedImage image; private double rotationAngle = 0; private AffineTransform transform = new AffineTransform(); // ... other methods @Override public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; // Apply the rotation transform to the graphics context g2d.setTransform(transform); // Draw the image at its center g2d.drawImage(image, -image.getWidth() / 2, -image.getHeight() / 2, null); } public void rotateImage(double angle) { rotationAngle += angle; // Update the AffineTransform with the new rotation angle transform.rotate(Math.toRadians(angle), image.getWidth() / 2, image.getHeight() / 2); // Repaint the panel to display the updated image repaint(); } }
RotateButtonSSCE(按鈕操作監聽器)中的用法:
public void actionPerformed(ActionEvent ev) { vis.rotateImage(ROTATE_ANGLE_OFFSET); }
此程式碼將每個按鈕將每個按鈕將每個按鈕將每個按鈕上的旋轉角度增加一個小值(ROTATE_ANGLE_OFFSET)點擊並相應地更新影像。您可以調整 ROTATE_ANGLE_OFFSET 來控制旋轉動畫的速度。
以上是如何在Java Swing中使用定時器平滑地將影像旋轉90度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用IntelliJIDEAUltimate版本啟動Spring...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...
