当前位置: 首页 > 知识库问答 >
问题:

我可以使用setClipBounds剪裁带有圆的视图吗?

田翰林
2023-03-14

我有以下代码来划分要绘制的视图区域:

Rect rect = new Rect();
rect.set(0, 0, 100, 100);
View.setClipBounds(rect);

这将仅在指定的矩形(本例中为正方形)上绘制视图。然而,我想把视图剪成一个圆圈。有没有什么方法可以绕过矩形对象的角点?

共有3个答案

许涵容
2023-03-14

试试这个:

val circlePath = Path().apply {
        addCircle(x, y, radius, Path.Direction.CW)
    }
canvas.clipPath(circlePath)
阴飞星
2023-03-14

尝试使用

RectF r = new RectF(10,100,200,400);
canvas.drawRoundRect(r, 0, 0, mPaint);

大约或方格。

另一种方法是使用剪切掩码。这个想法的概念是使用PorterDuffXferModePorterDuff。这是圆角视图的示例。我不知道你直接想要什么,这就是为什么我可以给我用过的基本方法。另一个例子。

赫连琦
2023-03-14

在这种情况下,您必须对该视图进行子类化,并为其添加一些额外的逻辑。

将这些代码添加到其构造函数方法中,或者添加到您希望初始化视图的任何位置。

final Path path = new Path();
path.addRoundRect(new RectF(0,0,getWidth(),getHeight()),10,10,Direction.CW);

使用这些代码,您可以定义要绘制视图的路径(面片边界内的区域)。

将此方法添加到类中,以便在视图上应用此遮罩。

@Override
protected void dispatchDraw(Canvas canvas){
    canvas.clipPath(path);
    super.dispatchDraw(canvas);
}

学分:https://stackoverflow.com/a/7559233/1841194

 类似资料:
  • 我想从矩形照片中制作一个居中的圆形图像。照片的尺寸未知。通常是矩形。我尝试了很多方法: 密码

  • 我试图在从图库中选择图像后使用intent来裁剪图像。以下是我的代码片段 在这里,我使用PICK_IMAGE_REQUEST意图句柄调用上面的代码段 由于我在裁剪后使用了相同的意图,即PICK_IMAGE_REQUEST,可能会出现什么问题

  • 我正在尝试通过使用Apache POI的XSLF API实现,将Eclipse Draw2D图形转换为PowerPoint页面。 Apache POI的HSLF API支持AWT绘图的类似方法,使用HSLF类实现java.awt.Graphics2Dorg.apache.poi.hslf.model.PPGraphics2D。 AWT 和 Draw2D 的基本图形类都提供了裁剪后续绘图的方法。这在

  • 我在寻找过去的一天,我没有成功。 我从API获取图像,并使用以下代码将其下载到位图文件。 我得到一个正方形的图像,我想裁剪四个角,使其成为圆形图像。有没有可能实现的方法? 欢迎任何相关答案。提前谢谢。

  • 问题内容: 我有这个HTML: 使用此CSS: 我正在应用的背景图像是200x100像素,但我只想显示200x50像素的背景图像的裁剪部分。 似乎不是正确的CSS属性。我该怎么用呢? 不应使用,因为我在Sprite上下文中使用了上述CSS,在该Sprite上下文中,我要显示的图像部分小于定义CSS的元素。 问题答案: 您可以将图形放置在具有其自身尺寸上下文的伪元素中: 浏览器支持很好,但是如果需要

  • 我正在使用OpenCV和Python在图像中查找圆。我能够使用OpenCV教程中的Hough圆变换代码找到圆。我想在圆心周围裁剪一个矩形。我没有能够得到正确的裁剪功能,并尝试了多种裁剪组合,要么得到了一个错误或图像的不正确部分。有人能说明我应该如何输入裁剪坐标吗?这就是我一直遇到的错误: 错误:(-215)大小。宽度 谢谢!