微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在位图上绘制图元

如何解决在位图上绘制图元

| 在我的自定义视图中,当用户选择一个标志时,我必须在基本位图上进行绘制。假设我有一个基本的面部位图,并且用户打开了胡须标志。由于此自定义视图必须具有可伸缩性,因此我想使用相对坐标(在[0,1]范围内)而不是位图的宽度和高度。以下无效
Bitmap orig,face;

public void onDraw(Canvas c) {
  c.drawBitmap(face);
}

public void onMustacheFlag() {
  face = Bitmap.create(orig);
  Canvas c = new Canvas(face);
  c.save();
  c.scale(1f / face.getWidth(),1f / face.getHeight());
  // Draw lines,circle,rectangles with all vertices in the range [0.0f,1.0f]
  c.restore();
}
此外,此自定义视图会强制高度等于宽度(这是一个正方形的形状因子)     

解决方法

        drawing1ѭ的参数用作绘制例程中as2ѭe和
y
坐标的系数。传递“ 4”表示将在(0,1)范围内假定的值乘以小于1的数字,因此所有绘制例程的结果都将出现在左上角,并且可能不可见。相反,如果我传递
width
height
,则代码按预期工作,因为范围(0,1)映射为(0,width):
public void onMustacheFlag() {
  face = Bitmap.create(orig);
  Canvas c = new Canvas(face);
  c.save();
  c.scale(face.getWidth(),face.getHeight()); // instead of 1 / width
  // Draw lines,circle,rectangles with all vertices in the range [0.0f,1.0f]
  c.restore();
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。