标签: android-canvas

如何在Android上执行与AffineTransform.transform类似的操作?

public Point2D transform(Point2D ptSrc, Point2D ptDst)
Run Code Online (Sandbox Code Playgroud)

转换指定的ptSrc并将结果存储在ptDst中.如果ptDst为null,则分配新的Point2D对象,然后将转换结果存储在此对象中.在任何一种情况下,为方便起见,都会返回包含转换点的ptDst.如果ptSrc和ptDst是同一个对象,则输入点将被转换后的点正确覆盖.

如何在Android上执行类似的操作?任何指针将不胜感激.谢谢.

android matrix android-canvas

1
推荐指数
1
解决办法
1702
查看次数

画布上的Android文字

我创建了一个画布.我在画布上画文字.但是当我在不同版本的android上测试时,文本看起来不同.版本4.х和2.2之间的区别.

    Bitmap btmText = Bitmap.createBitmap(140, 90, Bitmap.Config.ARGB_4444);
    Canvas cnvText = new Canvas(btmText);
    Typeface tf = tf = Typeface.createFromAsset(context.getAssets(),"fonts/font.ttf");

    Paint paint = new Paint();
    paint.setAntiAlias(true);
    paint.setSubpixelText(true);
    paint.setTypeface(tf);
    paint.setTextSize(50);
    cnvText.drawText(text, 0, 5, 0, 55, paint);
Run Code Online (Sandbox Code Playgroud)

android 2.2上的文字看起来比android 4.0.3更大.

android android-widget android-canvas

1
推荐指数
1
解决办法
3072
查看次数

如何在画布上绘制画布

我正在构建一个Android应用程序,我遇到了一个简单的事情:我如何绘制(或"添加")Canvas对象,到另一个Canvas对象,如"合并"它们?

如果那不可能,那么这样做的最佳解决方案是什么?

谢谢!

java android android-canvas

1
推荐指数
1
解决办法
7748
查看次数

用里面的位图创建一个位图

我知道 - 标题可能听起来很奇怪.让我解释:

我创建了一个图像来向您展示我正在谈论的内容: 问题

我有一个图像(位图(1)),大小为150w/200h.

现在我需要使位图更大((2)400w/400h),但原始图像必须具有相同的大小.使图像嵌入白色背景中.

我认为解决它的一种方法是:*创建一个大位图*为它创建一个画布*在画布上绘制原始位图*绘制画布*生成画布的位图

对我来说问题是,它必须在后台线程中完成而不绘制视图.我希望你能理解我.

android bitmap bitmapfactory android-canvas

1
推荐指数
1
解决办法
697
查看次数

使用canvas android拉伸图像

你好,我有两个图像,我正在使用画布合并图像

这是下面的代码

      Intent intent = getIntent();

       //bm is the image get from camera
        bm = BitmapFactory.decodeFile(intent.getStringExtra("getdata"));

       //this is simple white text image
        bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.txt_made_hawk_nelson);
        imgSeletedPhoto = (ImageView) findViewById(R.id.imgSelectedPhoto);

        int width = bm.getWidth();
        int height = bm.getHeight();

        int maxWidth = (width > bm1.getWidth() ? width : bm1.getWidth());
        int maxHeight = (height > bm1.getHeight() ? height : bm1.getHeight());


        // calculate the scale - in this case = 0.4f
        float scaleWidth = ((float) maxWidth) / width;
        float scaleHeight = ((float) maxHeight) …
Run Code Online (Sandbox Code Playgroud)

java android image bitmap android-canvas

1
推荐指数
1
解决办法
2214
查看次数

通过在自定义视图的onDraw中设置单位矩阵来偏移画布

我在onDraw自定义视图的方法中 为我的画布设置了一个矩阵,canvas.setMatrix(matrix);然后我只使用预定义的绘制绘制一个网格:

canvas.drawRect(0,0,viewWidth,viewHeight, background);

for(int i=0; i <= nRows; i++){
    canvas.drawLine(0,i*cellHeight, nCols*cellWidth,i*cellHeight,lines);
    canvas.drawLine(i*cellWidth, 0, i*cellWidth, nRows*cellHeight, lines);
    if(i != nRows)
        canvas.drawText(""+i, i*cellWidth, (i+1)*cellHeight, text);
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,整个画布偏移了一个细胞高度的1.5倍左右.知道为什么会发生这种情况或如何解决它?因此,矩阵没有初始化,因此根据文档应该是身份.

非常感谢!

java android matrix android-custom-view android-canvas

1
推荐指数
1
解决办法
4018
查看次数

如何在画布上用alpha渐变绘制圆?

怎样在这张图片上用Alpha渐变画在画布上?
在此处输入图片说明

android android-canvas

1
推荐指数
1
解决办法
897
查看次数

在画布中旋转文本

如何旋转画布中的文本?我需要翻转我颠倒过来的文字.

paint.setTextSize(20); 
canvas.drawText("3AM", xStored, yStored, paint);
Run Code Online (Sandbox Code Playgroud)

android text rotation android-canvas

1
推荐指数
3
解决办法
7754
查看次数

纹理查看视频和位图显示

我有一个显示位图(占位符图像)的TextureView,当用户加载视频时,textureView应该显示视频.

我设法在纹理视图中播放视频并在纹理视图中显示位图,但是当按顺序完成时,我只得到一个黑屏.

在我的onSurfaceTextureAvailable方法中,我在表面视图上绘制一个位图,如下所示:

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.ic_add_clip);
    Canvas canvas = lockCanvas();
    canvas.drawBitmap(bm, (width/2)-(bm.getWidth()/2), (height/2)-(bm.getHeight()/2), null);
    unlockCanvasAndPost(canvas);
}
Run Code Online (Sandbox Code Playgroud)

当用户从其库中选择视频时,我将Uri加载到媒体播放器中并将曲面设置为媒体播放器.但是仍然显示位图.我试图通过清除画布删除位图,它确实删除了位图,但纹理视图只是黑色,也不会显示视频.

public void setMediaPlayer(MediaPlayer mediaPlayer) {
    // Canvas canvas = lockCanvas();
    // canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
    // unlockCanvasAndPost(canvas);

    Surface s = new Surface(getSurfaceTexture());
    mMediaPlayer = mediaPlayer;
    mMediaPlayer.setSurface(s);
    mMediaPlayer.setOnPreparedListener(this);
}
Run Code Online (Sandbox Code Playgroud)

有些东西告诉我,用于显示视频的表面视图位于我在TextureAvailble上绘制的位图的后面.当我尝试清除画布时,我也清除了媒体播放器想要使用的表面.有解决方案吗

android android-canvas textureview android-bitmap

1
推荐指数
1
解决办法
5677
查看次数

CustomView未在ScrollView中显示

这里有新的Android程序员.

我正在尝试在Android上将.png图像显示为位图.我能够显示转换后的图像的唯一方法是使用扩展的自定义类View.但是,我的图像太大,无法完全显示在屏幕上,我希望能够滚动它.但是当我定义一个ScrollView并将CanvasBitmap放入其中时,我得到一个空白屏幕.我没有运气设置布局文件,所以这一切都在Activity类中完成.

这是创建活动的位置:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ScrollView scroll = new ScrollView(this);
    scroll.addView(new CustomView(this));
    setContentView(scroll);
}
Run Code Online (Sandbox Code Playgroud)

这是我的CustomView类:

private class CustomView extends View{

    public CustomView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas){
        Bitmap bitmapMap = BitmapFactory.decodeResource(getResources(),R.drawable.resourceimage);
        canvas.drawBitmap(bitmapMap,0,0,null);
        this.setWillNotDraw(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在我的Activity中替换这行代码:setContentView(scroll) 使用这一行:setContentView(new CustomView(this)),我可以看到图像,尽管不是整个图像.那么,有没有办法在布局文件中设置它呢?或者有什么我想念的东西我需要在ScrollView课堂上宣布?

编辑:我不想使用ImageView,因为我想在特定位置更改图像,使用位图似乎是通过x和y坐标实现这一目标的最简单方法.

android bitmap android-layout android-canvas

1
推荐指数
1
解决办法
1042
查看次数