Có ai có gợi ý hay giải thích cho sự cố sau không? Tôi vẽ một đường dẫn với một bitmapshader. Khi canvas không được thu nhỏ, có vẻ tốt (ảnh đầu tiên). Khi tôi mở rộng (phóng to), bitmapshader không được thu nhỏ và trông rất xấu. Tôi đã thử nhiều thứ với tái tạo bitmapshader sau khi phóng to, nhưng đã không thành công :-(Có ai có một gợi ýbitmapshader và canvas.scaling android
Không Scaling có vẻ tốt:.?
khi mở rộng quy mô có vẻ xấu xí :
Code:
canvas.scale(scalex, scaley);
canvas.translate(itranslatex, itranslatey);
fillBMP = makePatternCross(fscalex, 1, Color.GREEN/*,fscalex,fscaley*/);
fillBMPshader = new BitmapShader(fillBMP, BitmapShader.TileMode.REPEAT, BitmapShader.TileMode.REPEAT);
paintshader = new Paint();
paintshader.setShader(fillBMPshader);
canvas.drawPath(cpath.path, paintshader);
private static Bitmap makePatternCross(float fSize, float fStrokewith,int iColor) {
Log.v("Create Patter makePatternCross","makePatternCross");
float fBitmapSizeOrig = 10;
fBitmapSizeOrig=fBitmapSizeOrig*fSize;
Bitmap bm = Bitmap.createBitmap((int)fBitmapSizeOrig,(int) fBitmapSizeOrig,Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bm);
//c.scale(200, 200);
c.drawColor(Color.WHITE);
Paint p = new Paint();
p.setColor(iColor);
//p.setStrokeWidth(iStrokewith);
p.setStrokeWidth(fStrokewith/fSize);
p.setStrokeWidth((float) 0.000001);
c.drawLine(0, 0, fBitmapSizeOrig, fBitmapSizeOrig, p);
c.drawLine(0, fBitmapSizeOrig, fBitmapSizeOrig, 0, p);
if (fSize != 1) {
int iNewSize = (int) ((fBitmapSizeOrig) * fSize);
bm = Bitmap.createScaledBitmap(bm, iNewSize, iNewSize, false);
}
int width = bm.getWidth();
int height = bm.getHeight();
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
if (bm.getPixel(x, y) == Color.WHITE) {
bm.setPixel(x, y, Color.TRANSPARENT);
} else {
// bm.setPixel(x, y, bm.getPixel(x, y));
}
}
}
return bm;
}
Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn. Nhưng đây không phải là giải pháp. Tôi đã thử mã của bạn với các giá trị khác nhau, nhưng vẫn như cũ. Tôi đã giải quyết vấn đề bằng một cách mới. Tôi vẽ hoa văn của mình bằng những con đường và giao cắt với khu vực tôi thích. Sau đó, không có quy mô mở rộng xuất hiện. –
@mcflysoft cũ nhưng nếu bạn giải quyết, vui lòng xem xét giải pháp đăng – Prashant