J'utilise canvas pour dessiner sur un bitmap et définir le bitmap couvert sur un imageView. J'ai dessiné un dessin de base dans la méthode appelée drawGraph(), quand l'utilisateur touche dans la toile je dois y dessiner un cercle, pour cela j'ai utilisé canvas à l'intérieur de la méthode onTouchEvent(), il n'y dessine rien , le code est donné ci-dessous, quel est le problème et comment puis-je résoudre ce problème.Toile Android ne dessine pas sur bitmap dans une autre méthode
J'ai également essayé de créer un autre bitmap avec une ligne droite, définissez le nouveau bitmap à imageView à la fin de drawGraph() et checkClicked(). Il montre que le nouveau bitmap (avec une ligne droite tracée) est correctement défini sur imageView au début, mais lorsque vous cliquez sur l'image, vous voyez un bitmap vide (n'étant pas tracé en ligne droite) sur imageView. Donc, je suis sûr que le dessin de toile ne fonctionne pas dans checkClicked().
Merci de m'avoir aidé à l'avance!
ImageView imageView;
Paint p = new Paint();
Bitmap myBitmap;
Bitmap workingBitmap;
Bitmap mutableBitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.img_drawpanel);
workingBitmap = Bitmap.createBitmap(myBitmap);
mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);
imageView = (ImageView) findViewById(R.id.image1);
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int touchX = (int) (event.getX() + imageView.getX());
int touchY = (int) (event.getY() + imageView.getY());
checkClicked(touchX, touchY);
return true;
}
});
drawGraph();
}
public void drawGraph(){
p.setAntiAlias(true);
p.setColor(Color.BLACK);
p.setStyle(Style.FILL_AND_STROKE);
p.setStrokeWidth(5);
Canvas canvas = new Canvas(mutableBitmap);
//basic drawing is successfully drawn here
imageView.setAdjustViewBounds(true);
imageView.setImageBitmap(mutableBitmap);
}
public void checkClicked(int x, int y){
p.setAntiAlias(true);
p.setColor(Color.RED);
p.setStyle(Style.FILL_AND_STROKE);
Canvas canvas = new Canvas(mutableBitmap);
//canvas doesn't draw a circle here
canvas.drawCircle(x, y, 10, p);
imageView.setAdjustViewBounds(true);
imageView.setImageBitmap(mutableBitmap);
J'ai converti la coordonnée: int a = (int) (drawPanel.getX() + x); int b = (entier) (drawPanel.getY() + myBitmap.getHeight() - y); Fonctionne bien dans la fonction drawGraph(), même règle s'applique à la fonction checkClicked() ne dessine rien (ou ailleurs) Est-ce que drawPanel.getX() et drawPanel.getY() changent entre les fonctions? Aidez-moi s'il vous plaît à partir de là! Merci! – philwu
J'appelle la fonction drawGraph() lorsque je clique sur l'imageView. Une chose étrange se produit, drawGraph() redessine le dessin de base hors de portée d'imgaeView, car je ne peux voir que la moitié supérieure du dessin ... – philwu