यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
छवियाँ (ImageView)
ImageView किसी कॉम्पोनेंट के भीतर एक Image प्रदर्शित करता है, स्केल (ImageSize) और
संरेखण के नियंत्रण के साथ।
पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
package com.exemplo;
import java.io.*; // IOException
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.image.*; // Image, ImageException
import dev.crossfly.util.*; // Debug
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
// फॉलबैक के साथ लोड करें: new Image(path) ImageException/IOException फेंकता है (चेक्ड)।
Image logo;
try
{
logo = new Image("images/logo.png"); // ऐप का रिसोर्स पथ
}
catch (ImageException | IOException e)
{
Debug.log("falha ao carregar: " + e);
return; // अगर इमेज न मिले तो असेंबली रोक देता है
}
// ImageView के साथ दिखाएं, अनुपात (RATIO) बनाए रखते हुए और केंद्रित।
ImageView foto = new ImageView(logo, ImageSize.RATIO)
.alignX(Position.CENTER)
.alignY(Position.CENTER);
add(0.4f, foto); // ऊंचाई का 40% (VerticalLayout)
// खुद विंडो की पृष्ठभूमि इमेज (Component का मेथड, ImageView नहीं)।
addBackgroundImage(logo, ImageSize.FIT, 0.5f, 0.5f); // केंद्रित, ढंकते हुए
}
}
नीचे दिए गए स्निपेट सिर्फ़ मूल भाग दिखाते हैं (जो
onShow()के अंदर जाता है)। चलाने के लिए, इन्हें ऊपर वालेMainWindowकंकाल में रखें।
एक Image लोड करना
Image logo;
try {
logo = new Image("images/logo.png"); // ऐप का रिसोर्स पथ
} catch (ImageException | IOException e) {
Debug.log("falha ao carregar: " + e);
return;
}
उपयोगी कंस्ट्रक्टर: new Image(String path), new Image(byte[] bytes), new Image(InputStream),
new Image(int w, int h) (बनाने के लिए खाली बिटमैप)। सभी ImageException फेंक सकते हैं (और
path/stream वाला IOException भी)।
प्रदर्शित करना
ImageView foto = new ImageView(logo, ImageSize.RATIO)
.alignX(Position.CENTER)
.alignY(Position.CENTER);
painel.add(0.4f, foto); // ऊंचाई का 40% (VerticalLayout)
कंस्ट्रक्टर: ImageView(), ImageView(Image), ImageView(Image, ImageSize)। फ़्लुएंट: .image(Image),
.imageSize(ImageSize), .alignX(Position), .alignY(Position)।
स्केल मोड (ImageSize)
| मोड | व्यवहार |
|---|---|
ORIGINAL |
पिक्सेल में प्राकृतिक आकार |
RATIO |
अनुपात बनाए रखते हुए कॉम्पोनेंट के भीतर फ़िट होता है (जगह बच सकती है) |
FIT |
अनुपात बनाए रखते हुए कॉम्पोनेंट को ढँकता है (काट सकता है) |
STRETCH |
भरने के लिए खींचता है, अनुपात को अनदेखा करते हुए |
FIT_WIDTH / FIT_HEIGHT |
अनुपात बनाए रखते हुए, चौड़ाई / ऊँचाई के अनुसार समायोजित करता है |
FIT_HALF_WIDTH / FIT_HALF_HEIGHT |
आधी चौड़ाई / ऊँचाई |
व्यावहारिक नियम:
RATIO= “पूरी दिखे” (letterbox);FIT= “बिना विकृति के भरे” (अतिरिक्त को काटता है);STRETCH= विकृत करते हुए भरे (फ़ोटो में इससे बचें)।
पृष्ठभूमि छवि (किसी कॉम्पोनेंट/स्क्रीन की)
यह एक ImageView नहीं है — यह स्वयं Component की एक विधि है:
janela.addBackgroundImage(fundo, ImageSize.FIT, 0.5f, 0.5f); // केंद्रित, ढंकते हुए
// या Relative द्वारा आकारित:
janela.addBackgroundImage(marca, Relative.ofScreen(0.3f), null, 0.5f, 0.9f);
centerX/centerY 0–1 हैं (छवि के केंद्र की सापेक्ष स्थिति)।
सर्वोत्तम अभ्यास
- लोड करते समय हमेशा
ImageException/IOExceptionको संभालें — ये checked हैं। - फ़ोटो:
RATIO(सब कुछ दिखाएँ) याFIT(काटते हुए भरें)।STRETCHसे बचें (विकृत करता है)। - बड़ी छवियों को paint थ्रेड के बाहर लोड करें और
Component.onUI(...)के साथ वापस आएँ।
आम गलतियाँ
new Image(...)के अपवादों को न पकड़ना → कम्पाइल नहीं होता।- किसी व्यक्ति की फ़ोटो में
STRETCHका उपयोग करना (विकृति);FITका उपयोग करें। RATIO(भीतर फ़िट) कोFIT(ढँकता और काटता है) के साथ भ्रमित करना।
यह भी देखें
- कस्टम ड्राइंग · Whiteboard
- कैटलॉग: ImageView · संदर्भ: अध्याय 18 — छवियाँ