الوقت/التاريخ الآن هو الجمعة أبريل 26, 2024 6:59 pm
1 نتيجة بحث عن paintBorder
إنشاء اطار دائري للصور باستخدام JLabel
من المعروف أن لغة الجافا لا توفر مكون متخصص لعرض الصور فى تطبيقاتهم لذلك اغلبهم يستخدمون #JLabel لعرض الصور ..ولذلك سننشئ في هذا المقال #JLabel مخصصًا سيكون له شكل دائري على حافته ، و بالتالى سنحصل على تأثير دائري رائع وأنيق لصورك بدلا من JLabel المستطيل التقليدي
لإعطاء الشكل الدائري لـ JLabel ، ما سنفعله هو إنشاء حدودنا الخاصة التي سيتم تمديدها من #AbstractBorder ، ثم سنقوم بالكتابة فوق طريقة #paintBorder للرسم بفضل java2d على شكل Ellipse2D ، لملء الأجزاء من الشكل الدائري ، سيتم استخدامه لون المكون الرئيسي.
اذن اولا فئة سنقوم بكاتبة فئة و ليكن باسم #CircleBorder لانشاء الحدود الدائرية على النحو التالى :
- الكود:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import javax.swing.border.AbstractBorder;
public class CircleBorder extends AbstractBorder{
private Color color;
private BasicStroke stroke = null;
private RenderingHints hints;
CircleBorder() {
color = Color.blue;//negro
stroke = new BasicStroke(2);//سمك الحافة
hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
}
CircleBorder( Color color, int value) {
this.color = color;
stroke = new BasicStroke(value);
hints = new RenderingHints(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
}
@Override
public void paintBorder(Component c,Graphics g,int x, int y, int width, int height) {
Graphics2D g2 = (Graphics2D) g;
Ellipse2D circle2D = new Ellipse2D.Double();//java2d
//إذا كان عرض خط الحدود يساوي الصفر
if( stroke.getLineWidth()==0 )
{
//ارسم الدائرة بالكامل
circle2D.setFrameFromCenter(
new Point(x+width/2,y+height/2), //نقطة المنتصف
new Point( width , height) //ancho y alto
);
}
else
{
//طلاء الدائرة ولكن طرح سمك الحافة
circle2D.setFrameFromCenter(
new Point(x+width/2,y+height/2),
new Point( width-(int)stroke.getLineWidth() , height-(int) stroke.getLineWidth())
);
}
Polygon pointer = new Polygon();
Area area = new Area(circle2D);
area.add(new Area(pointer));
g2.setRenderingHints(hints);
//طلاء الخلفية مع لون المكون الأصل
Component parent = c.getParent();
if (parent!=null) {
Color bg = parent.getBackground();
Rectangle rect = new Rectangle(0,0,width, height);
Area borderRegion = new Area(rect);
borderRegion.subtract(area);
g2.setClip(borderRegion);
g2.setColor(bg);
g2.fillRect(0, 0, width, height);
g2.setClip(null);
}
if( stroke.getLineWidth()>0 )
{
g2.setColor(color);
g2.setStroke(stroke);
}
g2.draw(area);
}
}
الان يمكنك استخدام الطريقة اعلاه على النحو التالى :
- الكود:
jLabel1.setBorder(new CircleBorder());
- في السبت نوفمبر 30, 2019 8:06 pm
- ابحث في: واجهة المستخدم الرسومية Java Swing
- موضوع: إنشاء اطار دائري للصور باستخدام JLabel
- المساهمات: 2
- مشاهدة: 978
أمس في 8:56 pm من طرف moslema_r
» شركة مكافحة حشرات في راس الخيمة
أمس في 8:34 pm من طرف moslema_r
» تطبيقIncogniton لإدارة ملفات تعريف متعددة للمتصفح
الأربعاء أبريل 24, 2024 3:51 pm من طرف زاكااا
» افضل شركة مكافحة النمل الابيض بالرياض
الإثنين أبريل 22, 2024 9:41 pm من طرف moslema_r
» Exemplary Сasual Dating - Verified Women
الخميس أبريل 18, 2024 9:18 pm من طرف wdqwd
» رش الدفان بالرياض
الخميس أبريل 18, 2024 7:11 pm من طرف moslema_r
» شركة تنظيف خزانات الشارقة
الخميس أبريل 18, 2024 6:57 pm من طرف moslema_r
» شركة مكافحة الفئران بالرياض
الإثنين أبريل 15, 2024 8:23 pm من طرف moslema_r
» افضل شركة كشف تسربات المياه بالباحة
الخميس أبريل 04, 2024 7:02 am من طرف gmalnagy
» ساعدوني وفهموني help me
الجمعة مارس 29, 2024 8:37 am من طرف linesoft