यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
ImageView
ImageView कॉम्पोनेंट की सीमाओं के भीतर एक Image रेंडर करता है, स्केल मोड को enum ImageSize द्वारा और क्षैतिज/ऊर्ध्वाधर संरेखण को Position के माध्यम से नियंत्रित करते हुए। यह एक लेआउट में एक निश्चित इमेज (फ़ोटो, कवर, लोगो) दिखाने का घोषणात्मक तरीका है।
आंतरिक रूप से यह एक कैश्ड स्केल की गई प्रति (ResizeMode.STRETCH, ResizeQuality.FAST) रखता है ताकि हर फ़्रेम पर आकार न बदलना पड़े; इमेज, स्केल मोड या आकार बदलने पर कैश अमान्य हो जाता है।
🟢 · पैकेज:
dev.crossfly.ui· विस्तारित करता है:Component· स्टाइल:ComponentStyle(आंतरिक margin के लिएingapका उपयोग करता है)
कब उपयोग करें
- एक लेआउट में एक निश्चित इमेज प्रदर्शित करना: फ़ोटो, कवर, लोगो, अवतार।
- समायोजित करना कि इमेज स्थान को कैसे भरती है (aspect ratio, cover, stretch)।
कब उपयोग न करें
- प्रति-फ़्रेम एनिमेशन, परिवर्तनशील निरंतर स्केल या मिश्रित ड्रॉइंग → सीधे
paint.image(...)कॉल करते हुएonPaintके साथ एक अपनाComponentबनाएं (देखेंimages-and-graphics/)। - किसी अन्य कॉम्पोनेंट की पृष्ठभूमि इमेज → स्वयं
ComponentकेBackgroundImageका उपयोग करें (अध्याय 18)।
दिखावट
इमेज डिफ़ॉल्ट रूप से आंतरिक क्षेत्र (ingap के बाद) के भीतर केंद्रित होती है और ImageSize के अनुसार स्केल की जाती है:
ImageSize |
व्यवहार |
|---|---|
ORIGINAL |
प्राकृतिक आकार, बिना स्केल के |
RATIO |
सीमाओं के भीतर समाने के लिए समान स्केल (letter-box) — डिफ़ॉल्ट |
FIT |
सीमाओं को ढकने के लिए समान स्केल (काट सकता है) |
STRETCH |
ठीक-ठीक भरने के लिए खींचता है (aspect ratio को अनदेखा करता है) |
FIT_WIDTH / FIT_HEIGHT |
चौड़ाई / ऊंचाई के अनुसार समायोजित करता है, अनुपात बनाए रखते हुए |
FIT_HALF_WIDTH / FIT_HALF_HEIGHT |
आधी चौड़ाई / ऊंचाई के अनुसार समायोजित करता है |
``
पूर्ण उदाहरण (कॉपी, पेस्ट और रन करें)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.image.*; // Image, ImageException
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
// एक Image लोड करने पर ImageException/IOException आ सकता है — स्क्रीन न टूटे इसलिए संभालें।
ImageView iv = new ImageView(); // खाली (placeholder: कुछ भी नहीं बनाया जाता)
try {
Image capa = new Image("cf/samples/api/ui/books/book1.png");
iv.image(capa).imageSize(ImageSize.RATIO);
} catch (ImageException e) {
System.out.println("Imagem não encontrada, usando placeholder vazio: " + e.getMessage());
}
add(LAY_FILL, iv);
}
}
नीचे दिए गए अंश केवल मुख्य भाग दिखाते हैं (जो
onShow()के अंदर जाता है)। रन करने के लिए, इन्हें ऊपर दिएMainWindowढांचे में रखें।
बुनियादी उपयोग
Image capa = new Image("cf/samples/api/ui/books/book1.png");
ImageView iv = new ImageView(capa, ImageSize.RATIO);
container.add(LAY_FILL, iv);
कंस्ट्रक्टर
| कंस्ट्रक्टर | विवरण |
|---|---|
ImageView() |
खाली (image = null, ImageSize.RATIO) |
ImageView(Image image) |
RATIO मोड वाली इमेज |
ImageView(Image image, ImageSize imageSize) |
इमेज + स्केल मोड |
गुण और अनुकूलन
| गुण / मेथड | प्रकार | डिफ़ॉल्ट | क्या करता है |
|---|---|---|---|
image(Image) |
ImageView (फ्लुएंट) |
null |
इमेज बदलता है (कैश/लेआउट अमान्य करता है) |
imageSize(ImageSize) |
ImageView (फ्लुएंट) |
RATIO |
स्केल मोड परिभाषित करता है |
alignX(Position) |
ImageView (फ्लुएंट) |
CENTER |
क्षैतिज संरेखण (START/CENTER/END) |
alignY(Position) |
ImageView (फ्लुएंट) |
CENTER |
ऊर्ध्वाधर संरेखण |
getImage() |
Image |
— | वर्तमान इमेज (या null) |
getImageSize() |
ImageSize |
— | वर्तमान मोड |
getAutoWidth() / getAutoHeight() |
int |
— | इमेज का आकार + ingap (यदि इमेज नहीं तो 0) |
कॉलबैक और इवेंट
कोई नहीं। ImageView गैर-इंटरैक्टिव है।
अवस्थाएं
कोई इंटरैक्शन अवस्था नहीं। यदि image == null, तो कुछ भी नहीं बनाया जाता।
शीर्ष पर संरेखण के साथ Cover (क्रॉप)
Image foto = new Image(caminhoFoto);
ImageView avatar = new ImageView(foto, ImageSize.FIT)
.alignY(Position.START); // काटते समय ऊपरी हिस्सा दृश्यमान रखता है
container.add(0.4f, avatar);
रनटाइम में इमेज बदलना (फ्लुएंट)
ImageView iv = new ImageView(); // खाली
container.add(LAY_FILL, iv);
// बाद में, लोड करते समय:
iv.image(new Image(novoCaminho))
.imageSize(ImageSize.STRETCH);
सर्वोत्तम प्रथाएं
ImageViewको एक परिभाषित लेआउट स्थान दें (LAY_FILLया भिन्न) — स्केल मोड केवल ज्ञात सीमाओं के साथ ही सार्थक है।- जब
Imageका उपयोग न हो तो उसेdispose()से मुक्त करें (नेटिव संसाधन — अध्याय 18 देखें)। - Web में,
ResizeQuality.FASTको प्राथमिकता दें;ImageViewका आंतरिक स्केल पहले ही इस पथ का उपयोग करता है।
सामान्य गलतियां
FITकोRATIOके साथ भ्रमित करना:RATIOletter-box करता है (पूरी समाती है);FITढकता है और काट सकता है।STRETCHविकृत करता है।- इमेज रहित
ImageViewसे स्वचालित आकार की अपेक्षा करना:getAutoWidth/Height()image == nullहोने पर0लौटाते हैं।