2013-11-22 17 views
5

Hai hình ảnh được đưa ra thổi tôi gọi hình ảnh đầu tiên dưới dạng hình ảnh khung và hình ảnh thứ hai dưới dạng hình ảnh khung.Đây là fst là Linear Layout của tôi và tôi đặt khung hình làm hình nền của nó. Bây giờ tôi muốn điền vào hình ảnh hoa văn trong vùng màu trắng của khung hình của tôi. Khu vực bên ngoài của hình ảnh khung là trong suốt và khu vực bên trong là màu trắng. Làm cách nào tôi có thể điền hình ảnh mẫu vào khung hình của tôi. Tôi đã thử mã này.Điền vào mẫu trong Hình ảnh trong Android

private void patternFill(Bitmap tempBitmapColor) { 
    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pattern_a); 
     BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp); 
     bitmapDrawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); 
     fst.setBackgroundDrawable(bitmapDrawable); 


} 

nhưng điều này cho hình ảnh bitmap vuông. và Imageview của tôi giống như thế này, trong đó tôi muốn điền vào mẫu.

enter image description here

mô hình hình ảnh giống như this-

enter image description here

tôi muốn lấp đầy hình ảnh mẫu trong vùng trắng chỉ hình ảnh này. Tôi có thể tô màu bên trong khung hình ảnh này nhưng không được thực hiện trong trường hợp Hình ảnh mẫu. bất cứ ai có thể giúp tôi xin vui lòng ...

UPDATE: - tôi đọc rằng nếu chúng ta muốn thiết lập nhiều hơn thì một màu vì vậy chúng tôi nên sử dụng shader tôi cập nhật mã hiện

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; 

} 

Vì vậy, Ở đây tôi có thể thiết lập đổ bóng thành công. Sau khi phương pháp này OnDraw phương pháp sẽ gọi

@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); 
     } 

setXfermode là gì tôi đã cố gắng một số chế độ trong phương pháp setpattern tôi như: DST_OVER, DST_IN

drawPaint.setColorFilter(new PorterDuffColorFilter(Color.YELLOW,Mode.MULTIPLY)); 

     drawPaint.setXfermode(new PorterDuffXfermode(Mode.DST_OVER)); 

nhưng không nhận được kết quả tùy theo nhu cầu.

Là bất kỳ chế độ có thể giải quyết mục đích của tôi hiện nay tôi nhận được kết quả này

enter image description here

Tôi nghĩ rằng tôi rất gần với kết quả. Tôi có thể vẽ các mô hình những gì bao giờ tôi cần bây giờ vấn đề remaning là để thiết lập patten chỉ trong khu vực bên trong không minh bạch của khung.

Tôi cũng đã cố gắng này

if (canvasBitmap.getPixel (x, y) == Color.TRANSPARENT)

để xác định khu vực trong suốt để tôi có thể điền vào mẫu trong không minh bạch khác là nhưng điều này cũng không đang làm việc.

Ở đây tôi đang tải lên hình ảnh để làm rõ hơn Trong hình ảnh thổi tôi điền vào màu sắc trong khung hình ảnh Bây giờ tôi muốn điền vào mẫu thay cho màu hồng.

enter image description here

Có ai có bất kỳ điểm tốt để thử vui lòng chia sẻ ...

Trả lời

0

Bạn có thể có cái nhìn về các hướng dẫn sau đây để giúp đỡ của bạn

Drawing with Pattern Fills bởi Sue Smith

Sử dụng các hướng dẫn ở trên, bạn có thể nhận được sau đầu ra enter image description here

Các vấn đề liên quan