画布不显示图像/绘制对象 [英] Canvas is not Showing Image/Drawable
本文介绍了画布不显示图像/绘制对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我做的SVG的路径和影像作品。我已加载SVG文件,并得到一个形象,尝试设置在画布上THI图像。但是画布不显示图像。我入住的高度和宽度,此图片/照片的无效支票,不为空,所以我无法理解,之所以画布不显示图像。任何帮助
我的code:
公共类MainActivity延伸活动{ 上下文℃;
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
C = getApplicationContext();
的setContentView(新GameView(本));
}
公共类GameView扩展视图{
私人诠释宽度,高度; 私人长期svgId; 画中画; 长的startTime;
浮动比例因子; 公共GameView(上下文的背景下){
超级(上下文); SVG SVG = SVGParser.getSVGFromResource(getResources(),R.raw.android);
照片= svg.getPicture();
} @覆盖 保护无效onLayout(布尔变化,诠释离开,诠释顶部,右诠释,诠释底部){ //获取可视面积 宽度=右 - 左; 高度=底 - 顶; } @覆盖 公共无效的onDraw(帆布油画){ //画一个白色背景... canvas.drawColor(Color.BLACK); 如果(帆布!= NULL)
{
Toast.makeText(C,yahooooooooooooooooo+ picture.getHeight(),Toast.LENGTH_LONG).show(); 比例因子= Math.min((浮动)的getHeight()/ picture.getHeight(),(浮动)的getWidth()/ picture.getWidth());
canvas.scale((浮动)的比例因子,(浮点)比例因子);
canvas.drawPicture(图片);
} } }
}
解决方案
这是我用返回一个对象绘制,我将通过我的所有应用
使用
它的工作原理相当不错的。
最后BitmapDrawable getSVG_Drawable
(INT svgResourceID,诠释的宽度,高度INT)
{
//从资源中的SVG /原始图片。
最终SVG矢量=
SVGParser.getSVGFromResource(getResources(),svgResourceID); 最后DisplayMetrics指标=新DisplayMetrics();
。getWindowManager()getDefaultDisplay()getMetrics(指标)。 //重绘图片到一个新的大小。
最后的BMP位图=
Bitmap.createBitmap(宽度,高度,Bitmap.Config.ARGB_8888);
最后帆布CNV =新的Canvas(BMP);
cnv.setDensity((int)的(metrics.xdpi)); cnv.drawPicture(vector.getPicture(),新的Rect(0,0,宽度,高度));
最后BitmapDrawable DRW =新BitmapDrawable(getResources(),BMP); //返回绘制。
返回DRW;
}
I am doing a work on SVG Paths and Image. I have loaded SVG file and get an image and try to set thi image on canvas . But canvas is not showing image. I check the height and width and null check of this image/picture and it is not null so i am unable to understand that why canvas is not showing image. any help
My code:
public class MainActivity extends Activity{
Context c;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
c=getApplicationContext();
setContentView(new GameView(this));
}
public class GameView extends View{
private int width, height;
private long svgId;
Picture picture;
long startTime;
float scaleFactor;
public GameView(Context context) {
super(context);
SVG svg = SVGParser.getSVGFromResource(getResources(),R.raw.android);
picture = svg.getPicture();
}
@Override
protected void onLayout (boolean changed, int left, int top, int right, int bottom) {
// get visible area
width = right - left;
height = bottom - top;
}
@Override
public void onDraw(Canvas canvas) {
// paint a white background...
canvas.drawColor(Color.BLACK);
if (canvas!=null)
{
Toast.makeText(c, "yahooooooooooooooooo"+picture.getHeight(), Toast.LENGTH_LONG).show();
scaleFactor=Math.min((float)getHeight()/picture.getHeight(),(float)getWidth()/picture.getWidth());
canvas.scale((float)scaleFactor,(float)scaleFactor);
canvas.drawPicture(picture);
}
}
}
}
解决方案
This is what I use to return a drawable object that I will use through all my app
It works quite well.
final BitmapDrawable getSVG_Drawable
(int svgResourceID, int width, int height)
{
// Get a Picture from the SVG in res/raw.
final SVG vector =
SVGParser.getSVGFromResource(getResources(), svgResourceID);
final DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
// Redraw the picture to a new size.
final Bitmap bmp =
Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
final Canvas cnv = new Canvas(bmp);
cnv.setDensity((int) (metrics.xdpi));
cnv.drawPicture(vector.getPicture(), new Rect(0, 0, width, height));
final BitmapDrawable drw = new BitmapDrawable(getResources(), bmp);
// Return the drawable.
return drw;
}
这篇关于画布不显示图像/绘制对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文