Zwei Bilder sind gegeben blasen Ich nenne das erste Bild als Bild und das zweite Bild als Bild. Hier ist mein lineares Layout und ich setze das Bild als Hintergrundbild davon. Jetzt möchte ich das Musterbild in den weißen Bereich meines Bildrahmens füllen. Der äußere Bereich des Rahmenbildes ist transparent und der innere Bereich ist weiß. Wie kann ich ein Musterbild in meinem Bilderrahmen füllen? Ich habe diesen Code getestet.Füllmuster in Bild in Android
aber dies ergibt ein quadratisches Bitmap Image. und mein Imageview ist so, in dem ich Muster füllen möchte.
Musterbild ist wie this-
Ich möchte nur Musterbild in den weißen Bereich dieses Bildes zu füllen. Ich bin in der Lage, die Farbe innerhalb dieses Bildrahmens zu füllen, aber nicht im Falle von Musterbildern. kann mir einer bitte helfen ...
UPDATE: - ich gelesen, dass, wenn wir mehr als eine Farbe festlegen möchten, so sollten wir Shader ich das so
public void setPattern(String newPattern){
postInvalidate();
//get pattern
int patternID = getResources().getIdentifier(newPattern, "drawable", "com.akanksha.partternfillexperiment");
//decode
Bitmap patternBMP = BitmapFactory.decodeResource(getResources(), patternID);
//create shader
BitmapShader patternBMPshader = new BitmapShader(patternBMP,
Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
//color and shader
// drawPaint.setColor(0xFFFFFFFF);
drawPaint.setShader(patternBMPshader);
patternset=true;
}
aktuellen Code aktualisiert verwenden , Hier kann ich den Shader erfolgreich setzen. Nach dieser Methode OnDraw-Methode ruft
@Override
protected void onDraw(Canvas canvas) {
if(patternset){
for (int x = 0; x < canvasBitmap.getWidth(); x++) {
drawPath.moveTo(x, 0);
for (int y = 0; y < canvasBitmap.getHeight(); y++) {
drawPath.lineTo(x, y);
}
drawCanvas.drawPath(drawPath, drawPaint);
drawPath.reset();
invalidate();
canvas.drawBitmap(canvasBitmap, 0, 0, canvasPaint);
canvas.drawPath(drawPath, drawPaint);
}
Was ist setXfermode ich einige Modi in meiner setPattern Methode versuchte wie: DST_OVER, DST_IN
drawPaint.setColorFilter(new PorterDuffColorFilter(Color.YELLOW,Mode.MULTIPLY));
drawPaint.setXfermode(new PorterDuffXfermode(Mode.DST_OVER));
aber nicht Ergebnis immer Bedarf nach.
Ist jeder Modus meinen Zweck lösen kann zur Zeit ich diese Ausgabe
Ich glaube, ich bin sehr nah an das Ergebnis bin immer. Ich kann das Muster zeichnen, was auch immer ich brauche, das Remaning-Problem besteht darin, das Muster nur im inneren nicht transparenten Bereich des Rahmens zu setzen.
I auch versucht, diese
if (canvasBitmap.getPixel (x, y) == Color.TRANSPARENT)
transparenten Bereich zu identifizieren, so dass i Muster in einem anderen nicht-transparenten sind füllen kann, aber auch dies nicht Arbeiten.
Hier lade ich das Bild für mehr Klarstellung in das Schlagbild Ich fülle die Farbe in Bild-Bild Jetzt möchte ich Muster anstelle von Rosa Farbe füllen.
Kann jemand einen guten Punkt bitte teilen versuchen müssen ...