2017-11-28 3 views
0

Ich habe Leinwand, die Rechteck-Koordinaten im Bild erzeugen wird.Draw canvas drawRect mit dynamischen Koordinaten

enter image description here

In diesem Bild braucht rechteckige Form auf das obere Icon mit Leinwand-Koordinaten

Mein Beispielcode

@Override 
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
    Log.e("PICASA", "Loaded"); 
    setImageBitmap(bitmap); 
    Bitmap drawableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); 
    Canvas canvas = new Canvas(drawableBitmap); 

    List<ClickableArea> clickableAreas = IBSTFragment.getClickableAreas(); 
    for (ClickableArea clickArea : clickableAreas) { 
    Paint paint = new Paint(); 
    paint.setColor(Color.TRANSPARENT); 
    paint.setStyle(Paint.Style.FILL); 


    int x1 = clickArea.getX(); 
    int y1 = clickArea.getY(); 
    int w = clickArea.getW(); 
    int h = clickArea.getH(); 


    Rect rect = new Rect(x1, y1, w, h); 



    // FILL 
    canvas.drawRect(rect, paint); 


    paint.setStrokeWidth(10); 
    paint.setColor(Color.BLACK); 
    paint.setStyle(Paint.Style.STROKE); 
    canvas.drawRect(rect, paint); 
    rect.width(); 
    rect.height(); 


} 
    setImageBitmap(drawableBitmap); 
} 

Meine Koordinaten

zu ziehen
X  Y Width Height 

600, 100, 50, 50 
440, 125, 50, 50 
685, 270, 50, 50 
420, 350, 50, 50 
370, 245, 50, 50 
170, 280, 50, 50 
30, 280, 50, 50 
570, 250, 50, 50 

Ich habe eine Ausgabe wie diese enter image description here

+0

Es ist unklar, was Sie fragen, aber was ist in getImage (int, int, int, int) -Methode? –

+0

Ich brauche diese Methode ich nicht unwissentlich erwähnt @MarcosVasconcelos – kathir

+0

überprüfen Sie die Antwort, Ihr Problem ist jetzt die Koordinaten –

Antwort

1

Sie die Bitmap in den Speicher kopiert und nie angezeigt wird, auf der einen ziehen, die Sie als ImageResource gesetzt:

setImageBitmap(bitmap); 
Canvas canvas = new Canvas(bitmap); 

Wenn Sie als ARGB_8888 kopieren müssen dann

Bitmap drawableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); 
Canvas canvas = new Canvas(drawableBitmap); 
//Draw everything, then after (at end of method) 
setImageBitmap(drawableBitmap); 

Wie für Ihre Koordinaten:

X  Y Width Height 
600, 100, 50, 50 
440, 125, 50, 50 
685, 270, 50, 50 
420, 350, 50, 50 
... 

Sie sind (X, Y, W, H) während Android Rechtecke sind (L, T, R, B)

zu konvertieren Ihre Koordinaten verwenden:

Rectangle area = new Rectangle(x, y, x + w, y + h); 

dann ist die Fläche ziehen in die Leinwand.