自定义视图绘制圆产生椭圆

Posted

技术标签:

【中文标题】自定义视图绘制圆产生椭圆【英文标题】:Custom view draw circle produces ellipse 【发布时间】:2014-09-10 13:37:22 【问题描述】:

我有一个自定义视图,我正在尝试在视图中间画一个圆圈。但是代码会生成一个椭圆:

Paint p = new Paint();
p.setStyle(Style.STROKE);
p.setColor(Color.GREEN);
p.setStrokeWidth(0.02f);

mCanvas.drawCircle(0.5f, 0.5f, 0.2f, p);

视图的宽度和高度与较暗的圆矩形相同。

【问题讨论】:

你确定你没有使用任何类型的drawable吗?喜欢背景,还是类似的? 没有可绘制对象,我使用的是画布。 【参考方案1】:

经过几次尝试,我发现这是因为画布的宽度和高度不相等。 我不得不将画布缩放到相同的宽度/高度。 如果有人遇到同样的问题,这是我的代码:

mCanvas.save();
mCanvas.scale(1f, RATIO); //ratio between width and height
mCanvas.drawCircle(0.5f, 0.5f/RATIO, 0.2f, p);
mCanvas.restore();

【讨论】:

以上是关于自定义视图绘制圆产生椭圆的主要内容,如果未能解决你的问题,请参考以下文章

无法将文本绘制到自定义视图

在Android中绘制动态自定义视图棋盘

在自定义视图中绘制描边形状

iOS绘制带有底部边框的自定义视图

自定义视图Android上错误的笔画宽度绘制圆圈

在自定义绘制的视图中动画大小变化的问题