public Point2D transform(Point2D ptSrc, Point2D ptDst)
Run Code Online (Sandbox Code Playgroud)
转换指定的ptSrc并将结果存储在ptDst中.如果ptDst为null,则分配新的Point2D对象,然后将转换结果存储在此对象中.在任何一种情况下,为方便起见,都会返回包含转换点的ptDst.如果ptSrc和ptDst是同一个对象,则输入点将被转换后的点正确覆盖.
如何在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应用程序,我遇到了一个简单的事情:我如何绘制(或"添加")Canvas对象,到另一个Canvas对象,如"合并"它们?
如果那不可能,那么这样做的最佳解决方案是什么?
谢谢!
我知道 - 标题可能听起来很奇怪.让我解释:
我创建了一个图像来向您展示我正在谈论的内容:

我有一个图像(位图(1)),大小为150w/200h.
现在我需要使位图更大((2)400w/400h),但原始图像必须具有相同的大小.使图像嵌入白色背景中.
我认为解决它的一种方法是:*创建一个大位图*为它创建一个画布*在画布上绘制原始位图*绘制画布*生成画布的位图
对我来说问题是,它必须在后台线程中完成而不绘制视图.我希望你能理解我.
你好,我有两个图像,我正在使用画布合并图像
这是下面的代码
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) 我在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倍左右.知道为什么会发生这种情况或如何解决它?因此,矩阵没有初始化,因此根据文档应该是身份.
非常感谢!
如何旋转画布中的文本?我需要翻转我颠倒过来的文字.
paint.setTextSize(20);
canvas.drawText("3AM", xStored, yStored, paint);
Run Code Online (Sandbox Code Playgroud) 我有一个显示位图(占位符图像)的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上将.png图像显示为位图.我能够显示转换后的图像的唯一方法是使用扩展的自定义类View.但是,我的图像太大,无法完全显示在屏幕上,我希望能够滚动它.但是当我定义一个ScrollView并将Canvas其Bitmap放入其中时,我得到一个空白屏幕.我没有运气设置布局文件,所以这一切都在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 ×10
android-canvas ×10
bitmap ×3
java ×3
matrix ×2
image ×1
rotation ×1
text ×1
textureview ×1