2011-12-11 26 views
5

Tôi muốn sử dụng API Java 2D để vẽ trên một nhãn JLabel đã có hình ảnh trên đó và sau đó lưu ảnh đã chỉnh sửa kết quả.Làm thế nào để vẽ trên một JLabel?

Tôi không thể tìm thấy bất kỳ hướng dẫn nào về chủ đề cụ thể này, có ai có bất kỳ mã hoặc tham chiếu nào hiển thị cách thực hiện không?

+1

Vẽ trong một JPanel tương tự như bản vẽ trong bất kỳ JComponent nào như JPanel. Bạn có thể tìm kiếm diễn đàn này trong nhiều ví dụ, quay, nhiều người trong tôi bao gồm [example 1] (http://stackoverflow.com/questions/6575578/convert-a-graphics2d-to-an-image-or-bufferedimage/6575620# 6575620), [ví dụ 2] (http://stackoverflow.com/questions/7081308/jpanel-custom-drawing-using-graphics/7081362#7081362), [ví dụ 3] (http://stackoverflow.com/questions/ 6105393/thay đổi-jpanel-graphics-g-màu-vẽ-line/6105437 # 6105437) –

+0

và [ví dụ 4] (http://stackoverflow.com/questions/7365535/best-to-handle-2-overlaying-live -updated-panels/7366478 # 7366478) –

+0

Cảm ơn tôi sẽ đọc tốt! –

Trả lời

3

Một cách tiếp cận sẽ là hiển thị hình ảnh hiện có và vẽ thành một BufferedImage, như được hiển thị trong example này làm lớp phủ văn bản trên biểu tượng. Khi hình ảnh hoàn tất, hãy sử dụng ImageIO.write() để lưu hình ảnh theo định dạng mong muốn.

+0

Ví dụ đó chỉ là những gì tôi cần, cảm ơn! –

4

ghi đè phương thức paintComponent của JLabel. Trước tiên, nó sẽ gọi super.paintComponent, vì vậy bạn nhận được bất kỳ nội dung nào có chứa JLabel, sau đó thêm mã vẽ của riêng bạn sau đó. Nên trông hơi giống như thế này:

public void paintComponent(Graphics g){ 
    super.paintComponent(g) 
    g.drawWhatever ... 
} 
+1

+1 để có cách tiếp cận trực tiếp hơn. – trashgod

Các vấn đề liên quan