Vorrei creare un aspetto di "carta millimetrata" per la bitmap che sto disegnando tramite una tela e cercando di capire il modo migliore per farlo.Piastrellatura di una bitmap su una tela
Non riesco a passare una bitmap di origine che contiene lo sfondo della carta millimetrata al costruttore Canvas, poiché sto recuperando la tela in SurfaceView tramite la chiamata .lockCanvas().
Alcune soluzioni che ho provato:
ho provato attuazione this solution in Thread.run di mio SurfaceView(), ma il problema credo sia quando il BitmapDrawable viene convertito in una bitmap ... perde le proprietà di piastrellatura.
canvas = mSurfaceHolder.lockCanvas (null); BitmapDrawable TileMe = new BitmapDrawable (BitmapFactory.decodeResource (getResources(), R.drawable.editor_graph)); TileMe.setTileModeX (Shader.TileMode.REPEAT); TileMe.setTileModeY (Shader.TileMode.REPEAT);
Bitmap b = TileMe.getBitmap(); canvas.drawBitmap (b, 0, 0, null);
Se utilizzo lo Canvas.drawBitmap method that takes a destination RectF as a parameter, sembra che la bitmap venga affiancata per riempire il RectF ... ma come posso dichiarare un RectF affidabile che riempie l'intera area di visualizzazione?
- Anche l'impostazione dello sfondo Attività sull'aspetto desiderato della carta millimetrata non funziona, in quanto il layout bitmap/canvas è opaco e impedisce di essere visto.
Qualche idea su come raggiungere questo obiettivo?
Utilizzato il metodo BitmapDrawable.draw (Canvas), funziona perfettamente, grazie! –
Forse notando che è necessario impostare myBitmapDrawable.setTileModeX (Shader.TileMode.RIPETERE); e myBitmapDrawable.setTileModeY (Shader.TileMode.REPEAT); in realtà disegnare piastrelle ... – bk138
shader bitmap sono così cool !! – rupps