CodeGym /وبلاگ جاوا /Random-FA /کلاس Java.Awt.Color
John Squirrels
مرحله
San Francisco

کلاس Java.Awt.Color

در گروه منتشر شد
اگر به Java Abstract Toolkit تسلط دارید، باید برنامه های Java AWT Color Class را یاد بگیرید. از آنجایی که سازنده ها و روش های زیادی درگیر هستند، ممکن است در ابتدا احساس ترسناکی داشته باشید. اما نگران نباشید، ما شما را تحت پوشش قرار دادیم:) با این خلاصه کامل در مورد Java AWT Color، یاد خواهید گرفت که چگونه یک نوع رنگ جدید ایجاد کنید و آن را در کمترین زمان مدیریت کنید. ما همچنین چند تست تمرینی ارائه خواهیم داد که به شما کمک می کند مهارت خود را تقویت کنید.

کلاس رنگ AWT در جاوا چیست؟

هدف اصلی AWT Color این است که به توسعه دهندگان اجازه دهد تا با استفاده از بسته های RGB (قرمز، سبز، آبی)، RGBA (قرمز، سبز، آبی، آلفا)، یا HSB (رنگ، ​​اشباع، اجزای BRI) رنگ های جدید را با استفاده از کد جاوا ایجاد کنند. کلاس شامل دو مقدار است - کد سایه و مقدار کدورت/شفافیت. کلاس Java.Awt.Color - 1در اینجا نحوه اعلان کلاس java.awt.Color آمده است:
public class Color
   extends Object
      implements Paint, Serializable
برای اعلام انواع مختلف رنگ ها با استفاده از Class.java.awt.Color، توسعه دهندگان از سازنده ها استفاده می کنند - اکنون به آنها نگاهی خواهیم انداخت.

AWT.Color Constructors در جاوا

بسته به پارامتر رنگی که می خواهید ایجاد کنید، باید از نوع خاصی از سازنده رنگ استفاده کنید. تعداد انگشت شماری از اینها وجود دارد - بیایید آنها را یکی یکی بررسی کنیم.
  • Color(float r, float g, float b)کلاسی است که برای تعریف رنگی در طرح رنگ RGB استفاده می کنید که مات است. شما می توانید محدوده رنگ را در هر جایی بین 0.0 و 0.1 مشخص کنید.
  • Color(float r, float b, float g, float a)کلاسی است که رنگ RGBA را تعریف می کند (محدوده مقادیر موجود 0.0 و 0.1 است).
  • Color(ColorSpace c, float[], co, float a)یک رنگ را در ColorSpace که از قبل مشخص کرده اید تعریف می کند. یک توسعه دهنده محدوده مولفه های رنگی را در آرایه شناور یک آلفای تعریف شده مشخص می کند.
  • Color(int, rgb)کلاسی است که یک رنگ RGB (مادر) ایجاد می کند. حتماً به مقدار مؤلفه سازنده توجه کنید - 16-23 برای قرمز، 8-15 برای سبز، 0-7 برای آبی.
  • Color(int r, int g, int b)- روشی که برای تعریف رنگ RGB مات استفاده می شود. مقدار رنگ باید بین 0 تا 255 باشد.
  • Color(int r, int g, int b, int a)- یک رنگ در طرح RGBA ایجاد می کند (0-255).
  • Color(int rgba, boolean b)برای ایجاد رنگ های sRGB در یک مقدار ترکیبی تعریف شده استفاده می شود. محدوده مقادیر برای آلفا 24-31، قرمز 16-23، سبز 8-15 و آبی 0-7 است.
به غیر از آن، class.awt.color با فیلدهای به ارث رسیده از Java.awt.Transparency:
  • TRANSLUCENTنشان می دهد که آیا رنگ حاوی مقادیر آلفا است یا نه و دارای دو مقدار - 0 و 1 است.
  • OPAQUEمقدار آلفای 1 را به شی اختصاص می دهد و شفافیت کامل آن را تضمین می کند.
  • BITMASKمقدار شفافیت یا کدورت مطلق را نشان می دهد و در محدوده (0;1) قرار دارد که در آن 0 شفافیت کامل و 1 شفافیت شدید است.

15 روش برتر برای استفاده در کلاس رنگ جاوا AWT

توسعه دهندگان جاوا برای دستکاری یک رنگ، تنظیم تاریکی یا روشنایی آن به روش های مختلفی متکی هستند. ده ها مورد وجود دارد، بنابراین لازم نیست همه آنها را از روی قلب یاد بگیرید. با این حال، وقتی صحبت از پرکاربردترین روش‌های رنگی Java AWT به میان می‌آید، فهرست را به پانزده کاهش دادیم. یادآوری این موارد بدون نیاز به ارجاع به اسناد Java API برای توسعه دهندگان مفید خواهد بود.

تیره تر ()

این روش برای ایجاد یک رنگ جدید استفاده می شود که نسخه تیره تری از رنگی است که قبلاً تعریف کرده اید. مثال :
Color.green.darker()
اگر یک بار استفاده darker()برای ایجاد سایه مورد نیاز شما کافی نیست، با خیال راحت روش را هر چند بار که می خواهید دوباره اعمال کنید، همانطور که در زیر نشان داده شده است:
Color.green.darker().darker().darker().darker().darker()

روشن تر()

همانطور که از نام آن پیداست، Color brighter()برای روشن کردن سایه ای که از قبل دارید استفاده می شود. به طور مشابه darker()، می توان آن را چندین بار در هر رنگ استفاده کرد. مثال :
Color myColor = Color.RED;

    JLabel label = new JLabel("First Name");
    label.setForeground(myColor.brighter());

int getAlpha()

اگر می خواهید جزء آلفای رنگ خود را برگردانید، از این روش استفاده کنید. به خاطر داشته باشید که مقادیر آلفا در محدوده 0-255 قرار دارند. در اینجا مثالی از کاربرد و بازگشت متد است. مثال :
alpha = Color.black.getAlpha();
return new Color(components[0], components[1], components[2], alpha);

استاتیک رنگ getColor (رشته نانومتر)

توسعه دهندگان جاوا می توانند از این روش برای تعیین مکان رنگ با استفاده از ویژگی های سیستم استفاده کنند. روش های دیگری نیز برای دستیابی به اهداف مشابه وجود دارد:
  • static Color getColor(String nm, int v)
  • static Color getColor(String nm, Color v)

رمزگشایی رنگ ایستا (رشته نانومتر)

از این روش برای نمایش رنگ به عنوان رشته استفاده می شود. پس از تکمیل تبدیل، یک توسعه دهنده یک رنگ مات تعریف شده دریافت می کند. مثال :
public static Color decodeColor(String hexColor) {

 return Color.decode(hexColor);

PaintContext createContext(ColorModel cm، Rectangle r، Rectangle2D r2d، AffineTransform xform، RenderingHints نکات)

این روش پیچیده به نظر می رسد اما دستکاری آن آسان تر از آن چیزی است که به نظر می رسد. Paint Context CreateContext()برای تعریف یک الگوی تک رنگ مکرر استفاده می شود. مثال :
public PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds,

                  AffineTransform xform, RenderingHints hints)

 {
   try
   {
     return new AxialShadingContext(shading, cm, xform, matrix, deviceBounds);
   }
   catch (IOException e)

   {

     LOG.error("An error occurred while painting", e);

     return new Color(0, 0, 0, 0).createContext(cm, deviceBounds, userBounds, xform, hints);

   }
 }
}

float[] getComponents (ColorSpace cspace، float[] compArray)

این یک روش جاوا است که می‌توانید روی یک رنگ اعمال کنید تا آرایه شناور و اجزای آلفا آن را برگردانید. این روش برای یک داده ColorSpaceتعریف شده توسط cspace اعمال می شود. مثال :
public float[] getComponents(ColorSpace cspace, float[] compArray) {

return myColor.getComponents(cspace, compArray);

}

ColorSpace getColorSpace()

توسعه دهندگان جاوا می توانند از این روش برای بازگرداندن فضای رنگی برای رنگ انتخابی استفاده کنند. راه دیگر برای بدست آوردن فضای رنگی برای یک ورودی داده شده، استفاده از Arrays.to.String است. این یک استراتژی پیچیده تر است، همانطور که در مثال زیر مشاهده می شود: مثال ها :
public class Main {
  public static void main(String[] args) {

    Color myColor = Color.RED;

    System.out.println(Arrays.toString(myColor.getComponents(ColorSpace.getInstance(ColorSpace.CS_CIEXYZ),null)));

getHSBCcolor(شناور h، شناور s، شناور ب)

توسعه دهندگان جاوا از این روش برای ایجاد یک شی رنگی جدید بر اساس مقادیر مدل HSB استفاده می کنند. مثال :
private Color colorAt(int y)

 {
   return Color.getHSBColor(1 - (float) y / (height - 1), 1, 1);
 }
}

getGreen()	returns the green component in the range 0-255 in the default sRGB space.

getGreen()

این متد جاوا مقدار مولفه سبز رنگی که ایجاد کرده اید را برمی گرداند. همه مقادیر در محدوده ای قرار می گیرند که با رنگ سبز در طرح رنگ RGB مطابقت دارد. مثال :
Color clickBoxColor = new Color(color.getRed(), color.getGreen(), color.getBlue(), 20);

getRed()

به طور مشابه getGreen()، getRedمقدار مولفه قرمز یک رنگ مشخص را برمی‌گرداند. قبلاً نحوه اعمال روش را در مثال بالا مشاهده کرده اید.

getBlue()

این روش مقدار آبی را در محدوده مقادیر طرح رنگ RGB برمی گرداند. به همین ترتیب، برای مثال استفاده getBlue()از توضیحات را ببینید getGreen().

getAlpha()

متد getAlpha() در جاوا زمانی استفاده می شود که یک توسعه دهنده بخواهد مقدار آلفای یک رنگ مشخص را پیدا کند. مشابه RBG، آلفای همه رنگ ها در محدوده 0-255 قرار دارد. مثال : در اینجا نحوه getAlpha()استفاده به عنوان بخشی از یک حلقه آمده است.
int alpha = color.getAlpha();
	if (alpha != 255)
	{
		setStrokeAlpha(alpha);
		strokeAlphaSet = true;

getTransparency()

این روش مقدار شفافیتی را که شما یا توسعه دهنده دیگری برای رنگ در هنگام ایجاد آن مشخص کرده اید، برمی گرداند. مثال :
public int getTransparency() {

return myColor.getTransparency();

بولی برابر است (شیء شیء)

اگر دو رنگ را با یکدیگر مقایسه کنید، این روش بسیار مفید است. به توسعه دهندگان جاوا اجازه می دهد بدانند که آیا دو شیء رنگی دارای مقادیر مساوی هستند یا خیر. مثال :
import java.awt.Color;
public class Main {
  public static void main(String[] a) {
    Color myBlack = new Color(0, 0, 0); // Color black
    Color myWhite = new Color(255, 255, 255); // Color white
    System.out.println(myBlack.equals(myWhite));
  }
}

برابر است (شیء شیء)

به طور مشابه boolean equals(Object obj)، این روش یک روش مقایسه ای است. ما از آن برای تعیین برابری اشیاء رنگی با یکدیگر استفاده می کنیم. مثال :
Object a = new Object(); Object b = new Object(); return(a.equals(b));

راهنمای رنگ های اصلی مورد استفاده در جاوا

اکنون که روش های مورد استفاده برای دستکاری رنگ ها در جاوا را درک کرده اید، بیایید نگاهی به انواع فیلدهایی بیندازیم که با آنها کار خواهید کرد. اینها رنگهای استاتیک واقعی هستند که توسعه دهندگان جاوا می توانند تعریف کنند. می توانید یک رنگ را با وارد کردن نام آن تعریف کنید (مطمئن شوید که دقیقاً همانطور که در اسناد رسمی نوشته شده است) یا مقدار RGB آن را مشخص کنید. بیایید نگاهی به استفاده توسعه دهندگان پالت بیندازیم:
نام زمینه شرح
رنگ ثابت سیاه (سیاه) رنگ مشکی را تعریف می کند
رنگ ثابت سفید (سفید) رنگ سفید را تعریف می کند
رنگ ثابت آبی (آبی) برای تعریف آبی استفاده می شود
رنگ خاکستری ساکن (خاکستری) رنگ خاکستری را تعریف می کند
رنگ ثابت خاکستری تیره (DARK_GRAY) سایه تیره خاکستری را مشخص می کند
رنگ ایستا خاکستری روشن (LIGHT_GRAY) سایه روشن تری از خاکستری را تعریف می کند
رنگ ثابت سبز (سبز) برای تعریف رنگ سبز استفاده می شود
استاتیک رنگ سرخابی (MAGENTA) سایه سرخابی را تعریف می کند
رنگ صورتی (صورتی) صورتی را در جاوا تعریف می کند
رنگ ثابت نارنجی (نارنجی) رنگ نارنجی را در جاوا ایجاد می کند
رنگ ثابت زرد (زرد) برای تعریف رنگ زرد استفاده می شود
رنگ ثابت قرمز (قرمز) رنگ قرمز را در جاوا تعریف می کند

تمرین مشکلات برای استفاده از AWT.Color در جاوا

آیا احساس می کنید که پایه محکمی از AWT Color در جاوا دارید؟ بیایید این مهارت ها را با حل چند مشکل عملی آزمایش کنیم - در اینجا، شما باید از سازنده ها و روش های رایج و همچنین سایر ابزارهای جاوا غیر مرتبط با رنگ استفاده کنید. تمرین مسئله شماره 1 یک مؤلفه سفارشی ایجاد کنید که به کاربر برنامه اجازه می دهد سطوح RGB را در یک رنگ (شبیه به RGBColorChooser) تغییر دهد. مطمئن شوید که getColor() را در اجزای خود قرار دهید. کامپوننت را یک زیر کلاس Panel قرار دهید، نه یک اپلت. پاسخ : این یک مشکل نسبتاً پیچیده است - اجازه دهید آن را به مراحل قابل مدیریت تقسیم کنیم:
  1. یک را RGBChooserبه کامپوننت تبدیل کنید
  2. یک روال جدید به مؤلفه اضافه کنید - getColor().
  3. setColor()برای تنظیم رنگ اضافه کنید .
در اینجا کد نمونه ای است که باید در پایان روز دریافت کنید:
import java.awt.*;
    import java.awt.event.*;

    public class RGBChooserComponent extends Panel implements AdjustmentListener {

       private Scrollbar redScroll, greenScroll, blueScroll;   // Scroll bars.

       private Label redLabel, greenLabel, blueLabel;  // For displaying RGB values.


       private Canvas colorCanvas;  // Color patch for displaying the color.

       public RGBChooserComponent() {  // Constructor.

           /*Now let’s add scrollbars with values from 0 to 255. */

           redScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);
           greenScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);
           blueScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);

           /* Create Labels showing current RGB and HSB values. */

           redLabel = new Label(" R = 0");
           greenLabel = new Label(" G = 0");
           blueLabel = new Label(" B = 0");

           /* We are setting backgrounds for Scrollbars and Labels, so they get the default
              gray background of the applet. */

           redScroll.setBackground(Color.lightGray);
           greenScroll.setBackground(Color.lightGray);
           blueScroll.setBackground(Color.lightGray);

           redLabel.setBackground(Color.white);
           greenLabel.setBackground(Color.white);
           blueLabel.setBackground(Color.white);

           /* Establish a panel that would listen for changes to the Scrollbars' values */

           redScroll.addAdjustmentListener(this);
           greenScroll.addAdjustmentListener(this);
           blueScroll.addAdjustmentListener(this);

           /* Add a canva, the background color of which will always match the currently selected color. */

           colorCanvas = new Canvas();
           colorCanvas.setBackground(Color.black);

           /* Create the applet layout, which consists of a row of
              three equal-sized regions holding the Scrollbars,
              the Labels, and the color patch.  The background color
              of the applet is gray, which will show around the edges
              and between components. */

           setLayout(new GridLayout(1,3,3,3));
           setBackground(Color.gray);
           Panel scrolls = new Panel();
           Panel labels = new Panel();

           add(scrolls);
           add(labels);
           add(colorCanvas);

           /* Add the Scrollbars and the Labels to their respective panels. */

           scrolls.setLayout(new GridLayout(3,1,2,2));
           scrolls.add(redScroll);
           scrolls.add(greenScroll);
           scrolls.add(blueScroll);

           labels.setLayout(new GridLayout(3,1,2,2));
           labels.add(redLabel);
           labels.add(greenLabel);
           labels.add(blueLabel);

       } // end init();


       public Color getColor() {
              // Get the color currently displayed by the component.
           int r = redScroll.getValue();
           int g = greenScroll.getValue();
           int b = blueScroll.getValue();
           return new Color(r, g, b);
       }


       public void setColor(Color c) {
             // Set the component to display the given color.
             // (Ignore this if c is null.)
          if (c != null) {
             int r = c.getRed();      // Get the color levels from the color.
             int g = c.getGreen();
             int b = c.getBlue();
             redLabel.setText(" R = " + r);   // Set the labels.
             greenLabel.setText(" G = " + g);
             blueLabel.setText(" B = " + b);
             redScroll.setValue(r);        // Set the scrollbars.
             greenScroll.setValue(g);
             blueScroll.setValue(b);
             colorCanvas.setBackground(new Color(r,g,b));  // Set the canvas.
             colorCanvas.repaint();
          }
       }


       public Dimension getMinimumSize() {
              // Specify the minimum reasonable size of this component.
          return new Dimension(150,40);
       }


       public Dimension getPreferredSize() {
              // Specify the preferred size of this component.
          return new Dimension(280,80);
       }


       public void adjustmentValueChanged(AdjustmentEvent evt) {
               // This is called when the user has changed the values on
               // one of the scrollbars.  All the scrollbars are checked,
               // the labels are set to display the correct values,
               // and the color patch is reset to correspond to the new color.
           int r = redScroll.getValue();
           int g = greenScroll.getValue();
           int b = blueScroll.getValue();
           redLabel.setText(" R = " + r);
           greenLabel.setText(" G = " + g);
           blueLabel.setText(" B = " + b);
           colorCanvas.setBackground(new Color(r,g,b));
           colorCanvas.repaint();  // Redraw the canvas in its new color.
       } // end adjustmentValueChanged


       public Insets getInsets() {
              // The system calls this method to find out how much space to
              // leave between the edges of the applet and the components that
              // it contains.  I want a 2-pixel border at each edge.
          return new Insets(2,2,2,2);
       }

    }  // end class RGBColorChooser

نتیجه

تبریک می گوییم، شما از طریق این راهنمای گسترده در مورد AWT.Color در جاوا گذرانده اید. اکنون، مدیریت رابط ها بسیار آسان تر خواهد بود. فراموش نکنید که دانش خود را با حل مسائل تمرینی و آزمون های CodeGym به کار ببرید. تمرین باعث عالی می شود، بنابراین نمونه مشکلات را به بهترین شکل ممکن امتحان کنید!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION