Bonjour,

je suis un projet d'application qui consiste à dessiner sur un canvas, sur lequel je place plusieurs "calques" ou bitmap pour être plus précis.
Dans l'application, l'utilisateur pourra zoomer jusqu'à une certaine taille que je contrôle déjà.
Mon problème réside dans le fait que quand l'utilisateur zoome, l'image matricielle du bitmap se pixelise. Pour cela, je dessine en gros (facteur x4) puis j'utilise la fonction scale de Canvas pour redimensionner l'image. Quand j'attends le zoom maxi x2, l'image est parfaite mais quand j'utilise
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
 
@Override
	public void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		this.canvas = canvas;
 
		canvas.save();
		if(firstDraw) {	
			float y = 0;
			paint.setTextSize(textSize);
			paint.setAntiAlias(true);
			paint.setFilterBitmap(true);	
		        canvas.setBitmap(bmpDessin);
			onDrawDessin("&", NBLINES, (int)(linespace*FACTOR), FACTOR*50, FACTOR*(50 + y), LENGTH);
			String[] example = {"d","e","s", "s","i", "n","o","n","s"," ","u","n"," ","x","!"};
			onDrawTexts(example, NBLINES, (int)(linespace*FACTOR), FACTOR*50, FACTOR*(50 + y), LENGTH);
			firstDraw = false;
			paint2 = paint;
		} else {    
 
			paint.setAlpha(255);
			paint.setAntiAlias(true);
		    paint.setFilterBitmap(true);
		    canvas.drawPoint(400, 10, paint);
		    canvas.drawBitmap(bmpLines, new Rect(0,0,(int)(mWidth), (int)(mHeight)), new Rect(0,0,(int)(mWidth*scaleFactor), (int)(mHeight*scaleFactor)), paint);
			canvas.drawBitmap(bmpDessin, new Rect(0,0,(int)(mWidth), (int)(mHeight)), new Rect(0,0,(int)(mWidth*scaleFactor), (int)(mHeight*scaleFactor)), paint);
 
 
 
		}
		canvas.restore();
		setVisibility(View.VISIBLE);
	}
 
	@Override
	protected void onSizeChanged(int w, int h, int oldw, int oldh) {
		super.onSizeChanged(w, h, oldw, oldh);
		mWidth = getWidth();
		mHeight = getHeight();
        canvas.scale(scaleFactor, scaleFactor);
		draw(canvas);
	}
Quand mon facteur de grossissement est égal à 0.5f (ou inférieur à 1 pour être plus général), mon image est redimensionnée sur la moitié de la taille de l'écran et non sur la moitié de la taille du canvas, qui fait 2 fois la taille de l 'écran.

Je pense que je n'ai pas bien compris le canvas et, si quelqu'un se sent le courage, je ne suis pas contre une explication du fonctionnement du canvas et de la manipulation ou alors si quelqu'un connaît une bonne doc qui pourrait combler mes ignorances...