HarmonyOS 鸿蒙Next Canvas 绘制圆角矩形

发布于 1周前 作者 phonegap100 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Canvas 绘制圆角矩形

我需要在屏幕上 canvas 绘制圆角矩形,查看了 api ,我应该是需要使用 lineto、arcto 进行绘制。但是发现 arcto方法貌似并不按照我理解的进行绘制,有大佬搞过这个吗?

2 回复

可以参考此文档

@Entry
@Component struct test {
  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Canvas(this.context)
        .width('90%')
        .height(300)
        .backgroundColor('#ff8f00')
        .onReady(() => {
          let radius = 10;
          //圆角弧度
          let x = 40;
          //左上角坐标x
          let y = 40;
          //左上角坐标y
          let width = 100;
          //矩形宽
          let height = 40;
          //矩形高
          this.context.beginPath();
          this.context.moveTo(x + radius, y);
          this.context.lineTo(x + width - radius, y);
          this.context.arcTo(x + width, y, x + width, y + radius, radius);
          this.context.lineTo(x + width, y + height - radius);
          this.context.arcTo(x + width, y + height, x + width - radius, y + height, radius);
          this.context.lineTo(x + radius, y + height);
          this.context.arcTo(x, y + height, x, y + height - radius, radius);
          this.context.lineTo(x, y + radius);
          this.context.arcTo(x, y, x + radius, y, radius);
          this.context.closePath();
          this.context.fillStyle = Color.Red
          this.context.fill();

        })
            }
            .width('100%')
            .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next Canvas 绘制圆角矩形的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,使用Next Canvas绘制圆角矩形可以通过以下步骤实现:

  1. 创建Canvas对象: 首先,确保你有一个Canvas对象。这通常是在自定义组件或页面的绘制逻辑中获得的。

  2. 设置Paint对象: 创建一个Paint对象,并设置其属性以绘制圆角矩形。关键属性包括颜色、样式(填充或描边)和圆角半径。

  3. 调用drawRoundRect方法: 使用Canvas的drawRoundRect方法,该方法接受一个RectF对象(表示矩形区域)、两个float值(分别表示圆角的水平和垂直半径)和一个Paint对象作为参数。

示例代码如下:

// 假设canvas和rectF已经初始化
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.FILL);
float cornerRadius = 20f; // 圆角半径

// 绘制圆角矩形
canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, paint);

注意:上述代码是基于Java的伪代码,实际在HarmonyOS中应使用鸿蒙的API。鸿蒙的Canvas和Paint类可能具有不同的方法名或参数,但核心逻辑类似。

在鸿蒙中,你需要找到对应的Canvas和Paint类,并调用drawRoundRect方法。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部