naeini89 30 ارسال شده در 28 فروردین، ۱۳۹۷ اشتراک گذاری ارسال شده در 28 فروردین، ۱۳۹۷ سلام وقت بخیر من میخوام برای لیبل stroke بسازم مثل عکس زیر حالا چطور میتونم با این کد جاوا این کار رو انجام بدم؟ دوستان راهنمایی کنن ممنون میشم public class MainActivity extends Activity { DrawingView dv ; private Paint mPaint; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dv = new DrawingView(this); setContentView(dv); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); mPaint.setColor(Color.GREEN); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeJoin(Paint.Join.ROUND); mPaint.setStrokeCap(Paint.Cap.ROUND); mPaint.setStrokeWidth(12); } یا ازین کد: public class OutlineLabel extends JLabel { private Color outlineColor = Color.WHITE; private boolean isPaintingOutline = false; private boolean forceTransparent = false; public OutlineLabel() { super(); } public OutlineLabel(String text) { super(text); } public OutlineLabel(String text, int horizontalAlignment) { super(text, horizontalAlignment); } public Color getOutlineColor() { return outlineColor; } public void setOutlineColor(Color outlineColor) { this.outlineColor = outlineColor; this.invalidate(); } @Override public Color getForeground() { if ( isPaintingOutline ) { return outlineColor; } else { return super.getForeground(); } } @Override public boolean isOpaque() { if ( forceTransparent ) { return false; } else { return super.isOpaque(); } } @Override public void paint(Graphics g) { String text = getText(); if ( text == null || text.length() == 0 ) { super.paint(g); return; } // 1 2 3 // 8 9 4 // 7 6 5 if ( isOpaque() ) super.paint(g); forceTransparent = true; isPaintingOutline = true; g.translate(-1, -1); super.paint(g); // 1 g.translate( 1, 0); super.paint(g); // 2 g.translate( 1, 0); super.paint(g); // 3 g.translate( 0, 1); super.paint(g); // 4 g.translate( 0, 1); super.paint(g); // 5 g.translate(-1, 0); super.paint(g); // 6 g.translate(-1, 0); super.paint(g); // 7 g.translate( 0, -1); super.paint(g); // 8 g.translate( 1, 0); // 9 isPaintingOutline = false; super.paint(g); forceTransparent = false; } public static void main(String[] args) { JFrame w = new JFrame(); w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); OutlineLabel label = new OutlineLabel("Test", OutlineLabel.CENTER); label.setOpaque(true); w.setContentPane(new JPanel(new BorderLayout())); w.add(label, BorderLayout.CENTER); w.pack(); w.setVisible(true); } } با تشکر لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
سوال
naeini89 30
سلام
وقت بخیر
من میخوام برای لیبل stroke بسازم
مثل عکس زیر
حالا چطور میتونم با این کد جاوا این کار رو انجام بدم؟
دوستان راهنمایی کنن ممنون میشم
یا ازین کد:
public class OutlineLabel extends JLabel { private Color outlineColor = Color.WHITE; private boolean isPaintingOutline = false; private boolean forceTransparent = false; public OutlineLabel() { super(); } public OutlineLabel(String text) { super(text); } public OutlineLabel(String text, int horizontalAlignment) { super(text, horizontalAlignment); } public Color getOutlineColor() { return outlineColor; } public void setOutlineColor(Color outlineColor) { this.outlineColor = outlineColor; this.invalidate(); } @Override public Color getForeground() { if ( isPaintingOutline ) { return outlineColor; } else { return super.getForeground(); } } @Override public boolean isOpaque() { if ( forceTransparent ) { return false; } else { return super.isOpaque(); } } @Override public void paint(Graphics g) { String text = getText(); if ( text == null || text.length() == 0 ) { super.paint(g); return; } // 1 2 3 // 8 9 4 // 7 6 5 if ( isOpaque() ) super.paint(g); forceTransparent = true; isPaintingOutline = true; g.translate(-1, -1); super.paint(g); // 1 g.translate( 1, 0); super.paint(g); // 2 g.translate( 1, 0); super.paint(g); // 3 g.translate( 0, 1); super.paint(g); // 4 g.translate( 0, 1); super.paint(g); // 5 g.translate(-1, 0); super.paint(g); // 6 g.translate(-1, 0); super.paint(g); // 7 g.translate( 0, -1); super.paint(g); // 8 g.translate( 1, 0); // 9 isPaintingOutline = false; super.paint(g); forceTransparent = false; } public static void main(String[] args) { JFrame w = new JFrame(); w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); OutlineLabel label = new OutlineLabel("Test", OutlineLabel.CENTER); label.setOpaque(true); w.setContentPane(new JPanel(new BorderLayout())); w.add(label, BorderLayout.CENTER); w.pack(); w.setVisible(true); } }
با تشکر
لینک ارسال
به اشتراک گذاری در سایت های دیگر
0 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.