- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个获取 ImageView 坐标的代码,我想在用户在 ImageView 中触摸 2 次时画一条线。 imageview 有一个来自 drawable 的位图。有关详细信息,这是我的代码:
public class MainActivity extends Activity implements OnTouchListener {
ImageView tampil;
Matrix matrix = new Matrix();
Matrix savedMatrix = new Matrix();
private static final String TAG = "Touch";
static final int NONE = 0;
static final int DRAG = 1;
static final int ZOOM = 2;
int mode = NONE;
// Remember some things for zooming
PointF start = new PointF();
PointF mid = new PointF();
float oldDist = 1f;
float x1, y1, x2, y2;
Bitmap bmp;
int i = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tampil = (ImageView)findViewById(R.id.imageView1);
tampil.setOnTouchListener(this);
Drawable d = getResources().getDrawable(R.drawable.enigma);
bmp = ((BitmapDrawable)d).getBitmap();
tampil.setImageBitmap(bmp);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
//ImageView view = (ImageView) v;
// Handle touch events here...
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
Log.d(TAG, "mode=DRAG");
mode = DRAG;
Log.i(TAG, "("+String.valueOf((int)event.getX())+","+String.valueOf((int)event.getY())+")");
if (i==1){
x1 = event.getX();
y1 = event.getY();
i = 2;
Log.i(TAG, "coordinate x1 : "+String.valueOf(x1)+" y1 : "+String.valueOf(y1));
} else if (i==2){
x2 = event.getX();
y2 = event.getY();
i = 3;
Log.i(TAG, "coordinate x2 : "+String.valueOf(x2)+" y2 : "+String.valueOf(y2));
onDraw();
}
break;
}
return true;
}
public void onDraw(){
Bitmap tes = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Bitmap.Config.RGB_565);
tes = bmp;
Canvas cvs = new Canvas(tes);
Paint pnt = new Paint();
pnt.setColor(Color.RED);
Log.i(TAG, "draw line");
cvs.drawLine(x1, y1, x2, y2, pnt);
i=1;
tampil.setImageBitmap(tes);
}
}
但是当用户触摸2次时,应用程序没有画线..任何人都可以给出解决方案
这是日志猫说的:
10-17 12:08:21.082: I/ActivityManager(70): Displayed com.example.tesontouch/.MainActivity: +3s139ms
10-17 12:08:24.103: D/Touch(796): mode=DRAG
10-17 12:08:24.103: I/Touch(796): (113,145)
10-17 12:08:24.123: I/Touch(796): coordinate x1 : 113.26723 y1 : 145.2766
10-17 12:08:26.243: D/dalvikvm(264): GC_EXPLICIT freed 8K, 55% free 2595K/5703K, external 1625K/2137K, paused 88ms
10-17 12:08:26.323: D/Touch(796): mode=DRAG
10-17 12:08:26.323: I/Touch(796): (306,284)
10-17 12:08:26.343: I/Touch(796): coordinate x2 : 306.67017 y2 : 284.45056
10-17 12:08:26.423: D/dalvikvm(796): GC_EXTERNAL_ALLOC freed 4K, 53% free 2559K/5379K, external 3064K/4342K, paused 81ms
10-17 12:08:26.473: I/Touch(796): draw line
10-17 12:08:31.413: D/dalvikvm(473): GC_EXPLICIT freed 6K, 52% free 2697K/5511K, external 3502K/4752K, paused 183ms
最佳答案
这是正确的工作代码:)
package com.example.stackdrawline;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
public class StackActivity extends Activity implements OnTouchListener {
ImageView tampil;
Matrix matrix = new Matrix();
Matrix savedMatrix = new Matrix();
private static final String TAG = "Touch";
static final int NONE = 0;
static final int DRAG = 1;
static final int ZOOM = 2;
int mode = NONE;
// Remember some things for zooming
PointF start = new PointF();
PointF mid = new PointF();
float oldDist = 1f;
float x1, y1, x2, y2;
Bitmap bmp;
int i = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_stack);
tampil = (ImageView)findViewById(R.id.imageView1);
tampil.setOnTouchListener(this);
Drawable d = getResources().getDrawable(R.drawable. enigma);
bmp = ((BitmapDrawable)d).getBitmap();
tampil.setImageBitmap(bmp);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
Log.d(TAG, "mode=DRAG");
mode = DRAG;
Log.i(TAG, "("+String.valueOf((int)event.getX())+","+String.valueOf((int)event.getY())+")");
if (i==1){
x1 = event.getX();
y1 = event.getY();
i = 2;
Log.i(TAG, "coordinate x1 : "+String.valueOf(x1)+" y1 : "+String.valueOf(y1));
} else if (i==2){
x2 = event.getX();
y2 = event.getY();
i = 3;
Log.i(TAG, "coordinate x2 : "+String.valueOf(x2)+" y2 : "+String.valueOf(y2));
onDraw();
}
break;
}
return true;
}
public void onDraw(){
bmp = Bitmap.createBitmap(tampil.getWidth(), tampil.getHeight(), Config.ARGB_8888);
Canvas c = new Canvas(bmp);
tampil.draw(c);
Paint pnt = new Paint();
pnt.setColor(Color.RED);
c.drawLine(x1, y1, x2, y2, pnt);
tampil.setImageBitmap(bmp);
i = 1;
}
}
关于android触摸画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12926990/
我对java Graphics不熟悉,我想在3个按钮上画一条线。我找到了一些绘制线条的方法,但没有一个将其绘制在按钮顶部。 这是我的 GUI 类 public class GUI extends JF
我正在尝试画线。 int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.
我目前正在尝试在 BabylonJS 中跟踪对象的路径。 为此,我想在现有位置和以前的位置之间画一条线。 我能得到的最接近的是一个立方体。 var plane = BABYLON.Mesh.Creat
我正在尝试绘制一棵递归树,但我已经卡在了开头。一段时间以来,我一直在尝试解决这个问题,但似乎无法解决。 我正在使用 StdDraw 库。这就是我想做的: 我已经画好了树干(黑线)。但我也需要画红线。
在我之前的问题中 For Loop Functions in Python ,我在放置包含为刽子手游戏划线的命令的函数时遇到了麻烦。它并没有完全划清界线,我首先怀疑这是 for 循环或函数的问题。现在
我有一个自定义布局,可以根据触摸输入画一条线。我让它画了线,但是当用户触摸屏幕时,线消失了,它画了一条新线。我想要它做的是画一条新线并将上一条线留在那里。这是我的代码: import andr
我想使用触摸监听器在屏幕上画一条线,但是当我再次尝试画线时,它会删除上一条线。我正在使用这段代码:- 我无法找到问题的解决方案。 public class Drawer extends View
我已经阅读了一堆涉及 XNA(以及它的各种版本)的教程,但我仍然对绘制原语感到有些困惑。一切似乎真的很复杂。 有人可以使用代码向我展示在屏幕上绘制一两行的最简单的 XNA 实现吗?也许有一个简短的解释
我是 Objective C 的初学者,我试图用 Paint 风格制作一个程序,我正在用平移手势画一条线。我可以做出手势,但问题是我无法在我用鼠标经过的地方画图,每次它重新加载我之前删除的那个点时。帮
如何使用 SVG 绘制连接 2 个图像的线?。例如我想画一条线连接 $1 和 $2(假设 $1 和 $2 是图像): $1 $2 是否需要 Javascript? 谢谢! 最佳答案 您可以轻松
我在创建此代码时遇到问题。我遇到的问题是,当我单击以停止绘制线条时,它有 50% 的机会第一次工作但是如果你只做直线,它似乎只能正常工作,但我希望它从任何方向工作,我不是 100% 确定为什么它不工作
我想在我的 TextView 中的数字/字母之间绘制垂直线。所以它看起来应该类似于 A|B|C|D 不使用 | 字符,而是使用 drawLine()。 我正在尝试使用 TextView 的宽度来做到这
我刚刚开始使用 AWT 来使用 GUI。框架正在打开,但线路未显示。 import java.awt.*; import java.awt.event.*; class A extends Frame
我可以使用 CGContext 绘制线条。如何使用 UIView 绘制具有相同坐标的线?以后想移动线条,需要用到UIView。 func DrawLine() { UIGraphicsBegi
请在此处查看我的代码 http://jsbin.com/ijoxa3/edit var drawHorizondalLine = function(x1,y1,x2,y2, color) {
IE9 Canvas 现在支持虚线吗?目前我正在做一些与以下非常相似的事情: var CP = window.CanvasRenderingContext2D && CanvasRenderingCo
我有一个程序,我正试图在一个小部件上画一条线。这是我的代码: 标题: #include #include class DrawingWidget : public QWidget{ Q_O
基于此question ,我写了这个 jsfiddle ,我想补充两点。问题可能是点位于六边形内。 这是 HTML:
我正在尝试从一个对象到目标对象画一条线。我设法做到了这一点,但是线条是从中心绘制的 我想做的是在目标上绘制从平面边缘到平面边缘的线 在此图像中,白线是当前绘制的连接,红线是我希望绘制线的方式 现在线条
如何添加线条,就像我在 Paint 中使用 ILNumerics 绘制一样?我的场景正在使用该代码构建: ilPanel1.Scene = new ILScene() { new ILP
我是一名优秀的程序员,十分优秀!