我有drawpath的代码,没有任何显示,我无法弄清楚为什么.
//i move the path's starting point somewhere up here to a point.
//get center x and y are the centers of a picture. it works when i
//do drawline and store the different starting points
//but i want it to look continuous not like a lot of different
//lines
path.lineTo(a.getCenterX(), a.getCenterY());
path.moveTo(a.getCenterX(), a.getCenterY());
p.setStrokeWidth(50);
p.setColor(Color.BLACK);
canvas.drawPath(path,p);
Run Code Online (Sandbox Code Playgroud)

提前致谢
我正在开发一个应用程序,该应用程序以图像作为索引来选择活动将开始的特定图像,但我不知道如何在 Canvas 中设置 onClickListener 或 onTouchListener 这是我的代码
public class DrawView extends View implements OnTouchListener {
LinearLayout mLayout;
Bitmap index;
Bitmap book;
Bitmap bird;
Bitmap game;
Bitmap mail;
Bitmap music;
Bitmap torch;
Paint paint;
public DrawView(Context context) {
super(context);
setFocusable(true);
setFocusableInTouchMode(true);
this.setOnTouchListener(this);
index = BitmapFactory.decodeResource(getResources(), R.drawable.photo1);
book = BitmapFactory.decodeResource(getResources(), R.drawable.book);
game = BitmapFactory.decodeResource(getResources(), R.drawable.game);
music = BitmapFactory.decodeResource(getResources(), R.drawable.music);
}
public void onDraw(Canvas canvas){
paint = new Paint();
Bitmap indexcanvas = Bitmap.createScaledBitmap(index, canvas.getWidth(),
canvas.getHeight(), true);
canvas.drawBitmap(indexcanvas, 0, 0, paint);
canvas.drawBitmap(book, 160, 100, …Run Code Online (Sandbox Code Playgroud) 可能重复:
我可以将大量位图保存到一个位图吗?(2d)的
我想知道canvas.save和canvas.restore是如何工作的.
我希望它如何工作,以及我如何使用它(但不起作用).
我真正需要的是在某个阶段(背景)保存我的画布,然后在它上面绘制对象,而不必每次我想要更新我的画布时绘制背景.
如何在图像上应用alpha渐变以使其呈线性渐变?现在,我正在创建单位宽度的矩形,并使用它来绘制带有绘图对象的位图,其中alpha值在循环中被更改.我只做了它,因为我想不出别的.所以更简洁的方式会更好.
Bitmap bitmap = BitmapFactory.decodeStream(is);
Bitmap bmp = Bitmap.createScaledBitmap(bitmap, 100, 151, true));
bitmap.recycle();
Rect Rect1 = new Rect(0, 0, 100, 100);
Rect Rect2 = new Rect(100, 0, 101, 100);
Paint paint = new Paint();
canvas.drawBitmap(bmp, Rect1, Rect1, null);
while (paint.getAlpha() != 0) {
paint.setAlpha(paint.getAlpha() - 5);
canvas.drawBitmap(bmp, Rect2, Rect2, paint);
Rect2.set(Rect2.left + 1, Rect2.top, Rect2.right + 1, Rect2.bottom);
}
Run Code Online (Sandbox Code Playgroud)
像这样的东西

PS我正试图为动态壁纸做这个.
我有一个自定义视图,我画一个弧.现在我还需要绘制一条连接中心和圆周的线,并且应该恰好位于弧的中间.
现在我知道android画布中绘制线的代码非常简单
但它不涉及角度,弧总是使用角度来绘制自己.
所以我可以在与弧相同的方向画线吗?
我清楚这里还是需要解释更多?
请帮忙.
我有一个位图列表。我想要的是获取这些位图,并在画布的帮助下,从我拥有的位图列表中创建一个带有缩小图像的新位图(意思是,使它们非常小)。
我已经设法做到了,但是由于缩小了图像,图像看起来很糟糕。我尝试了很多东西,设置,创建新画布等。
简单的第一个解决方案看起来像这样(下面的代码),但是,正如我所说,图像看起来很糟糕。
public static Bitmap folderBitmap(Bitmap bitmap[]) {
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.RGB_565);
Canvas c = new Canvas(b);
c.drawARGB(255, 255, 255, 255);
Paint paint = new Paint();
paint.setAntiAlias(false);
paint.setFilterBitmap(false);
paint.setDither(true);
c.drawBitmap(getBit(bitmap), 4, 4, paint);
c.drawBitmap(getBit(bitmap), 35, 4, paint);
c.drawBitmap(getBit(bitmap), 67, 4, paint);
c.drawBitmap(getBit(bitmap), 4, 35, null);
c.drawBitmap(getBit(bitmap), 35, 35, null);
c.drawBitmap(getBit(bitmap), 67, 35, null);
c.drawBitmap(getBit(bitmap), 4, 67, null);
c.drawBitmap(getBit(bitmap), 35, 67, null);
c.drawBitmap(getBit(bitmap), 67, 67, null);
return b;
}
private static Bitmap getBit(Bitmap[] b) {
Bitmap newBitmap = …Run Code Online (Sandbox Code Playgroud) 在画布上是否可以绘制文本但不显示其中的一半(好像它部分绘制在画布之外,但实际上并未离开画布)。我在带有一些文本的“图形”上有一个指示器,它遵循这一点,但我不希望将文本从图形部分中绘制出来(我正在绘制该区域之外的其他内容)。
我在画布后面的布局上也有一个背景,所以我不能只用位图绘画,因为这会导致一些纵横比/大小问题(看起来不太好)。
我试过在谷歌、堆栈溢出和实验中寻找答案,但无济于事。在谷歌上,我发现了很多关于在 android 画布上绘制文本的有趣的事情,但没有我想要的东西,我很困惑,我开始认为我想要的东西甚至不可能,我可能需要绘制文本自定义积分或找出看起来同样好的替代方案。
我想要自定义形状边框,如下所示:
这是我迄今为止尝试过的:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00000000"/>
<stroke android:width="0.1dp" android:color="#FFFFFF" />
<corners android:radius="5dp"/>
<!--<padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp" />-->
</shape>
Run Code Online (Sandbox Code Playgroud)
但这并没有给我弯曲的侧面,只有弯曲的角落。
我需要弯曲的侧面
android xml-drawable android-canvas android-drawable android-shapedrawable
我Canvas用于在我的 Android 应用程序中绘图。但结果质量很差(见图)
因此,画布绘图不会在“楼梯像素”之间绘制具有更深颜色的额外像素以进行平滑处理。像这样

但我对如何做到这一点很感兴趣。是否有一些平滑图片的偏好或方法?谢谢!
编辑:我在这里创立
我想在 Android 中使用 drawRoundRect 方法绘制一个圆角矩形。
void drawRoundRect (RectF rect, float rx, float ry, Paint paint)
Run Code Online (Sandbox Code Playgroud)
我使用的是 Android Studio,我的测试设备使用的是 Android 6.0.1,API 23
这是我的代码的一部分。当我在 rx 和 ry 中放置零时,它会起作用。
public void draw(Canvas canvas){
canvas.drawColor(Color.WHITE);
canvas.drawRoundRect(rect, 0, 0, pnt);
}
Run Code Online (Sandbox Code Playgroud)
这会在我的屏幕上绘制一个黑色矩形。
但是当我试图让它圆润时,
public void draw(Canvas canvas){
canvas.drawColor(Color.WHITE);
canvas.drawRoundRect(rect, 10, 10, pnt);
}
Run Code Online (Sandbox Code Playgroud)
它什么也没画。这只会绘制白色背景....
我在 rx 和 ry 中尝试了不同的数字,如 100、3、5、0.03f 等,
但是任何大于 0 的数字都会使 drawRoundRect() 不起作用。
我的代码有什么问题吗...?
android-canvas ×10
android ×9
java ×2
bitmap ×1
draw ×1
drawtext ×1
smoothing ×1
xml-drawable ×1