How can this be accomplished?
Here is what I've tried so far:
paint = new Paint();
path=new Path();
path.moveTo(50, 50);
paint.setColor(Color.argb(255, 25, 25, 255));
paint.setTextSize(70);
paint.setFakeBoldText(true);
paint.setMaskFilter(new BlurMaskFilter(10, BlurMaskFilter.Blur.SOLID));
Typeface typeface = Typeface.create(Typeface.SANS_SERIF,Typeface.BOLD);
paint.setTypeface(typeface);
paint.setStyle(Style.FILL_AND_STROKE);
paint.setAntiAlias(true);
paint.setDither(true);
paint.setTextAlign(Align.CENTER);
Related
I have a bitmap of cup image and i want to add dashed border around cup.
Here is what i did try, but it doesn't work :
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setARGB(255, 0, 0, 0);
paint.setStyle(Paint.Style.STROKE);
paint.setPathEffect(new DashPathEffect(new float[]{5, 10, 15, 20}, 0));
canvas.drawBitmap(cupBitmap, x, y, paint);
I wants to draw Circle on empty canvas, but not getting how to do.
This is code I'm using to create Empty canvas inside my custom ImageView class.
bmpBase = Bitmap.createBitmap(image_width, image_height, Bitmap.Config.ARGB_8888);
canvas = new Canvas(bmpBase);
Paint paint = new Paint();
paint.setColor(Color.BLUE);
canvas.drawCircle(100, 100, 30, paint);
try this, in your MainActivity first find your imageView and then:
drawingImageView = (ImageView)findViewById(R.id.DrawingImageView);
Paint paint = new Paint();
paint.setColor(Color.BLUE));
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(15);
bmpBase = Bitmap.createBitmap(image_width, image_height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawCircle(100, 100, 30, paint);
drawingImageView.setImageBitmap(bitmap);
Try this:
You need to set the Paint style to stroke if you just want an outline with no fill:
Paint p = new Paint();
p.setStyle(Paint.Style.STROKE);
and if you want filled circle then:
Paint p = new Paint();
p.setStyle(Paint.Style.FILL);
Or you can refer this:
http://android-coding.blogspot.in/2012/04/draw-circle-on-canvas-canvasdrawcirclet.html
I want to draw two colored circle on canvas. Everything is right but the circle isn't smooth.
This is the effect:
And this is code:
private void drawCircle(Canvas c)
{
RectF oval = new RectF(20, 20, 100, 100);
c.drawArc(oval, -90, 180, false, getPaintWithColor(R.color.background));
c.drawArc(oval, 90, 180, false, getPaintWithColor(R.color.font_grey));
}
private Paint getPaintWithColor(int colorId){
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setDither(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(4);
paint.setColor(getResources().getColor(colorId));
return paint;
}
paint.setFlags(Paint.ANTI_ALIAS_FLAG)
See in Can I draw with antialiasing on canvas?
I have several lines in my application. If somebody touches a line I have to highlight the line touched. I think if I could draw a transparent rectangle with light color, other than the clicked line color, then it will be highlighted properly.. So can anybody tell me how can I draw a transparent rectangle on Android canvas?
My line color is black. Please see the pic.
This will draw green 50% transparent rectangle on canvas:
Paint myPaint = new Paint();
myPaint.setStyle(Paint.Style.FILL);
myPaint.setColor(Color.rgba(0, 256, 0, 128)); // green color with 50% transparency
// c is your canvas
c.drawRect(100, 100, 200, 200, myPaint);
try this way
private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setColor(Color.RED);
mPaint.setStrokeWidth(3);
mPaint.setPathEffect(null);
canvas.drawRect(x, y, x + width, y + height, mPaint);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setColor(Color.WHITE);
mPaint.setStrokeWidth(3);
mPaint.setPathEffect(new DashPathEffect(new float[] { 5, 5 }, 5));
canvas.drawRect(x, y, x + width, y + height, mPaint);
you can use this:
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.MAGENTA);
DashPathEffect dashPath =new DashPathEffect(new float[ ]{70,2}, 30);
paint.setPathEffect(dashPath);
paint.setStrokeWidth(80);
canvas.drawRect(30, 300 , 320, 300, paint);
I have created custom view to draw a custom speech bubble inside
and I want put some text on custom view. I use drawTextOnPath but it doesn't work right, I want the text to appear line by line.
Custom View - Speech Bubble
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setAntiAlias(true);
paint.setStrokeWidth(2);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setPathEffect(new CornerPathEffect(15) );
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setDither(true);
paint.setShader(new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE,
Shader.TileMode.MIRROR));
Path path = new Path();
paint.setShadowLayer(4, 2, 2, 0x80000000);
path.moveTo(myPath[0].x, myPath[0].y);
for (int i = 1; i < myPath.length; i++){
path.lineTo(myPath[i].x, myPath[i].y);
}
path.close();
canvas.clipPath(path);
canvas.drawPath(path, paint);
canvas.save();
paint = new Paint();
paint.setColor(Color.WHITE);
canvas.drawTextOnPath(MessageBody, path, 10, 10, paint);
Thanks.
something like this?
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setStyle(Style.FILL);
canvas.drawPaint(paint);
...
//tell the paint of the new color
paint.setColor(android.R.color.black);
paint.setTextSize(20);
canvas.drawText("Some Text", 10, 25, paint);
edit:
then why not something like this
Path path = new Path();
path.addCircle(width/2, height/2, radius, Path.Direction.CW);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextSize(20);
canvas.drawTextOnPath("Some Text", path, 0, 0, paint);
edit nr2:
why not add a rect?
path.addRect(left, top, right, bottom, Direction.CW);
or
path.addRect(rect, Direction.CW);
I created a rectangle in the speech bubble like so
Rect rcText;
rcText = new Rect(rcBounds);//rcBounds is y speech bubble rect
canvas.save();
Limited the draw area
canvas.cliprect(rect);
And draw the text inside the speech bubble like this
canvas.drawtext(mytext,rect.left,rect.top,paint);
canvas.restore();
Thanks mc_fish.