मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

छवियाँ (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 (ढँकता और काटता है) के साथ भ्रमित करना।

यह भी देखें

क्या यह पृष्ठ उपयोगी था?