chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙原生繪圖API:從基礎(chǔ)到高階的繪制之旅(基礎(chǔ)版)

陳姚豐 ? 來(lái)源:jf_83680738 ? 作者:jf_83680738 ? 2025-03-16 15:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

theme: hydrogen

大家好,歡迎來(lái)到莓創(chuàng)IT技術(shù)分享頻道,我是陳楊。由于經(jīng)常有小伙伴一直給我反饋說(shuō)莓創(chuàng)圖表(mccharts)數(shù)據(jù)多的時(shí)候經(jīng)??D,很無(wú)奈之前做動(dòng)畫的時(shí)候沒(méi)考慮ArkTs的性能瓶頸,導(dǎo)致現(xiàn)在又要重構(gòu)開發(fā)。于是我重新翻閱文檔,看看有沒(méi)有新的方式來(lái)解決。在翻閱官網(wǎng)文檔的時(shí)候,無(wú)意間看到這句話。

發(fā)現(xiàn)了@ohos.graphics.drawing模塊性能竟然比canvas好,所以最近我有時(shí)間都在學(xué)習(xí)這個(gè)API的功能,準(zhǔn)備將莓創(chuàng)圖表(mccharts)進(jìn)行性能升級(jí),打造更加完美的圖表組件庫(kù)。這次我也給大家好好分享一下這個(gè)API,給大家準(zhǔn)備了三篇,寫的不好請(qǐng)見(jiàn)諒。

一、導(dǎo)入模塊(@ohos.graphics.drawing)

要使用這個(gè)繪圖模塊,第一步得把它導(dǎo)入到咱們的代碼里。在代碼里加上這行:

import { drawing } from '@kit.ArkGraphics2D';

這樣,咱們就可以使用模塊里的各種功能啦。

二、繪制基本圖形

(一)繪制矩形

鴻蒙繪圖里,繪制矩形有兩種常用方法,都在Canvas類里。
第一種方法是drawRect(rect: common2D.Rect): void。這里的rect參數(shù)是一個(gè)common2D.Rect類型的對(duì)象,它就像是矩形的“定位器”和“尺碼表”,通過(guò)設(shè)置left(左邊的位置)、right(右邊的位置)、top(上邊的位置)和bottom(下邊的位置),能精確確定矩形在畫布上的位置和大小。來(lái)看個(gè)例子:

import { common2D, drawing } from '@kit.ArkGraphics2D';
class DrawingRenderNode {
    draw(context) {
        const canvas = context.canvas;
        const rect = { left: 50, right: 150, top: 50, bottom: 150 };
        canvas.drawRect(rect);
    }
}

從API version 12開始,又多了一個(gè)更方便的方法drawRect(left: number, top: number, right: number, bottom: number): void。這個(gè)方法直接傳入矩形四個(gè)角的坐標(biāo)就行,代碼寫起來(lái)更簡(jiǎn)潔,而且性能還更好呢!比如:

canvas.drawRect(50, 50, 150, 150);

(二)繪制圓形

繪制圓形就用drawCircle(x: number, y: number, radius: number): void這個(gè)方法。xy代表圓心在畫布上的坐標(biāo),就像給圓心定個(gè)“家”,radius就是圓的半徑啦,而且半徑得是大于0的正數(shù),不然就畫不出圓咯。舉個(gè)例子:

canvas.drawCircle(100, 100, 30);

這行代碼就是在坐標(biāo)(100, 100)的地方畫一個(gè)半徑為30的圓。想象一下,就像在畫布上找到了一個(gè)中心點(diǎn),然后以這個(gè)點(diǎn)為中心,用半徑為30的“畫筆”轉(zhuǎn)一圈,一個(gè)圓就畫好啦。

三、設(shè)置顏色和混合模式

(一)繪制顏色

給圖形上色可以用drawColor方法,它有兩種形式。
第一種drawColor(color: common2D.Color, blendMode?: BlendMode): void,這里的colorARGB格式的顏色,ARGB分別代表透明度(Alpha)、紅色(Red)、綠色(Green)、藍(lán)色(Blue)。blendMode是顏色混合模式,默認(rèn)是SRC_OVER。比如咱們想畫個(gè)紅色的圖形,代碼可以這樣寫:

import { common2D, drawing } from '@kit.ArkGraphics2D';
canvas.drawColor({ alpha: 255, red: 255, green: 0, blue: 0 }, drawing.BlendMode.SRC_OVER);

從API version 12開始,又有了一個(gè)更簡(jiǎn)單直接的方法drawColor(alpha: number, red: number, green: number, blue: number, blendMode?: BlendMode): void。直接把顏色通道的值傳進(jìn)去就行,用起來(lái)更方便,性能也更好。像這樣:

canvas.drawColor(255, 255, 0, 0, drawing.BlendMode.SRC_OVER);

(二)顏色混合模式

顏色混合模式就像是給圖形顏色玩“魔法組合”,BlendMode枚舉里有好多有趣的模式可以選擇。比如說(shuō)CLEAR模式,用了它,繪制區(qū)域就會(huì)變得全透明,就好像圖形隱身了一樣??创a:

canvas.drawColor({ alpha: 255, red: 255, green: 0, blue: 0 }, drawing.BlendMode.CLEAR);

而默認(rèn)的SRC_OVER模式,是在目標(biāo)像素的上面繪制源像素,而且還會(huì)考慮源像素的透明度,這樣顏色疊加起來(lái)就會(huì)有不一樣的效果,讓圖形看起來(lái)更有層次感。

四、案例:繪制一個(gè)多彩的界面

咱們來(lái)綜合運(yùn)用這些知識(shí),畫一個(gè)簡(jiǎn)單的多彩界面,不過(guò)顯示比較麻煩。假設(shè)要畫一個(gè)藍(lán)色的矩形,再在上面畫一個(gè)紅色的圓形,代碼可以這么寫:

import { UIContext, NodeController, FrameNode, RenderNode, DrawContext } from '@kit.ArkUI';
import { common2D, drawing } from '@kit.ArkGraphics2D';

// 1. 自定義RenderNode
export class MyRenderNode extends RenderNode {
  async draw(context: DrawContext) {
    const canvas = context.canvas;
        // 繪制藍(lán)色矩形
        const blueRect = { left: 30, right: 130, top: 30, bottom: 130 };
        canvas.drawColor({ alpha: 255, red: 0, green: 0, blue: 255 }, drawing.BlendMode.SRC);
        canvas.drawRect(blueRect);
        // 繪制紅色圓形
        canvas.drawColor({ alpha: 255, red: 255, green: 0, blue: 0 }, drawing.BlendMode.SRC);
        canvas.drawCircle(80, 80, 30);
  }
}

// 2. 自定義NodeController
export class MyNodeController extends NodeController {
  private rootNode: FrameNode | null = null;
  myRenderNode = new MyRenderNode();

  makeNode(uiContext: UIContext): FrameNode {
    this.rootNode = new FrameNode(uiContext);
    if (this.rootNode === null) {
      return this.rootNode
    }

    const renderNode = this.rootNode.getRenderNode();
    if (renderNode !== null) {
      this.myRenderNode.backgroundColor = 0xffffffff;
      this.myRenderNode.frame = { x: 0, y: 0, width: 4800, height: 4800 };
      this.myRenderNode.pivot = { x: 0.2, y: 0.8 }
      this.myRenderNode.scale = { x: 1, y: 1 }
      renderNode.appendChild(this.myRenderNode);
      renderNode.clipToFrame = true
    }
    return this.rootNode;
  }
}

@Entry
@Component
struct RenderTest {
  @State message: string = 'hello'
  build() {
    Row() {
      Column() {
        // 4. 將自定義NodeController進(jìn)行顯示
        NodeContainer(new MyNodeController())
          .width('100%')
      }
      .width('100%')
      .height('80%')
    }
    .height('100%')
  }
}

在這段代碼里,先設(shè)置顏色為藍(lán)色,用SRC混合模式填充矩形區(qū)域,再繪制藍(lán)色矩形。接著設(shè)置顏色為紅色,同樣用SRC混合模式,然后繪制紅色圓形。運(yùn)行這段代碼,就能看到一個(gè)藍(lán)色矩形上面有個(gè)紅色圓形的界面啦。

今天咱們學(xué)習(xí)了鴻蒙繪圖@ohos.graphics.drawing模塊的基礎(chǔ)用法,包括導(dǎo)入模塊、繪制基本圖形、設(shè)置顏色和混合模式,還做了一個(gè)小案例。掌握了這些基礎(chǔ),后面咱們就能繼續(xù)探索進(jìn)階和高階的繪圖技巧,畫出更厲害的圖形啦!趕緊動(dòng)手試試吧,要是遇到問(wèn)題,多調(diào)試調(diào)試代碼,或者去官方文檔里找找答案。加油,期待大家畫出超酷的圖形!

也可以加入我們鴻蒙技術(shù)交流群,開發(fā)鴻蒙原生應(yīng)用過(guò)程有啥問(wèn)題都可以在群溝通,互相幫助,一起進(jìn)步。

在開發(fā)鴻蒙原生應(yīng)用的時(shí)候,需要用到圖表組件的也可以嘗試使用我們封裝的。圖表的官網(wǎng)地址:[meichuangit.net.cn/]

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1620

    瀏覽量

    64059
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2620

    瀏覽量

    44063
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    米哈游啟動(dòng)鴻蒙原生應(yīng)用開發(fā),給程序員帶來(lái)了什么信息?

    首先,不止米哈與鴻蒙合作原生應(yīng)用開發(fā)。在這之前還有其他互聯(lián)網(wǎng)大廠已經(jīng)與鴻蒙開發(fā)合作。HarmonyOS NEXT系統(tǒng)也在積極籌備中,已有400多家合作伙伴加入,全面啟動(dòng)了鴻蒙
    發(fā)表于 01-07 22:25

    鴻蒙Harmony是如何影響Android工程師的呢?

    官宣開始進(jìn)行鴻蒙原生應(yīng)用的研發(fā)之旅。迄今為止,已有超過(guò) 400 家合作伙伴投身其中,共同投入鴻蒙原生
    發(fā)表于 01-14 22:14

    HarmonyOS SDK,助力開發(fā)者打造煥然一新的鴻蒙原生應(yīng)用

    鴻蒙生態(tài)千帆啟航儀式于 1 月 18 日正式啟動(dòng)。 2019 年 HarmonyOS 正式發(fā)布 2020 年“沒(méi)有人能夠熄滅漫天星光”,今天,滿天星光終匯成璀璨星河,HarmonyOS NEXT
    發(fā)表于 01-19 10:31

    實(shí)錘!騰訊終于擁抱鴻蒙生態(tài),微信鴻蒙原生版本即將上線

    大家都知道, 目前已知純血鴻蒙星河版next將于今年6月份開啟Bate版本的測(cè)試 ,也就是說(shuō)原生鴻蒙系統(tǒng)快上線了。 而目前對(duì)于鴻蒙生態(tài)的發(fā)展,大家最關(guān)心的恐怕只有騰訊系的微信和QQ是否
    發(fā)表于 04-30 21:14

    鴻蒙原生開發(fā)手記:01-元服務(wù)開發(fā)

    簡(jiǎn)介 元服務(wù)是鴻蒙中的一種輕量應(yīng)用形態(tài),無(wú)需下載,直接運(yùn)行。類似于微信小程序,但與小程序不同的是,元服務(wù)更加輕量。 元服務(wù)使用原生開發(fā),是系統(tǒng)級(jí)提供的,無(wú)論易用性、性能、體驗(yàn)上,都要比小程序好
    發(fā)表于 11-14 17:28

    鴻蒙原生頁(yè)面高性能解決方案上線OpenHarmony社區(qū) 助力打造高性能原生應(yīng)用

    NEXT的原生頁(yè)面高性能解決方案,頁(yè)面滑動(dòng)、跳轉(zhuǎn)及應(yīng)用冷啟動(dòng)等關(guān)鍵環(huán)節(jié),為開發(fā)者提供全面的支持。目前,這些解決方案均已上線OpenHarmony開源社區(qū),可在OpenHarmony三方庫(kù)中心倉(cāng)進(jìn)行搜索,歡迎開發(fā)者多多使用和共建,打造更極致性能的
    發(fā)表于 01-02 18:00

    鴻蒙原生應(yīng)用開發(fā)也可以使用DeepSeek了

    和無(wú)私奉獻(xiàn)的辛勤工作,才讓我們能夠輕松地將強(qiáng)大的DeepSeek模型集成鴻蒙原生應(yīng)用的開發(fā)環(huán)境中,為開發(fā)效率的提升提供了強(qiáng)大的技術(shù)支持,向他們的這種精神和奉獻(xiàn)致敬! 下載鏈接:http
    發(fā)表于 02-20 18:06

    Kuikly鴻蒙版正式開源 —— 揭秘卓越性能適配之旅

    為Kotlin Native增加鴻蒙平臺(tái)的互操作文件,對(duì)接系統(tǒng)API,同時(shí)調(diào)整運(yùn)行時(shí)中涉及架構(gòu)、平臺(tái)的判斷等邏輯,使其實(shí)現(xiàn)對(duì)鴻蒙平臺(tái)的支持。 完成初步適配后,通過(guò)Kotlin官方的
    發(fā)表于 06-04 16:46

    鴻蒙開發(fā)API9 API12,有哪些不同

    。 API9屬于“兼容安卓”時(shí)代的產(chǎn)物,和API10開始的純血鴻蒙還是具有一定區(qū)別的,當(dāng)然,雖然我們說(shuō)純血鴻蒙
    發(fā)表于 06-29 22:47

    繪圖API函數(shù)

    繪圖API函數(shù) 一、 實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)使用嵌入式系統(tǒng)的繪圖API 函數(shù)。理解繪圖設(shè)備上下文(DC)在多任務(wù)操作系統(tǒng)中的作用。會(huì)使用繪
    發(fā)表于 12-25 23:56 ?2125次閱讀
    <b class='flag-5'>繪圖</b>的<b class='flag-5'>API</b>函數(shù)

    串口屏LUA教程7-繪圖API使用說(shuō)明

    串口屏LUA教程7-繪圖API使用說(shuō)明
    發(fā)表于 04-29 13:12 ?13次下載

    使用 Taro 開發(fā)鴻蒙原生應(yīng)用 —— 快速上手,鴻蒙應(yīng)用開發(fā)指南

    隨著鴻蒙系統(tǒng)的不斷完善,許多應(yīng)用廠商都希望將自己的應(yīng)用移植鴻蒙平臺(tái)上。最近,Taro 發(fā)布了 v4.0.0-beta.x 版本,支持使用 Taro 快速開發(fā)鴻蒙
    的頭像 發(fā)表于 02-02 16:09 ?1422次閱讀
    使用 Taro 開發(fā)<b class='flag-5'>鴻蒙</b><b class='flag-5'>原生</b>應(yīng)用 —— 快速上手,<b class='flag-5'>鴻蒙</b>應(yīng)用開發(fā)指南

    哪吒汽車APP啟動(dòng)鴻蒙原生應(yīng)用開發(fā)

    哪吒汽車正式簽約,啟動(dòng)鴻蒙原生應(yīng)用開發(fā);在5月17日,在上海市經(jīng)濟(jì)和信息化委員會(huì)指導(dǎo)的“千帆競(jìng)發(fā)啟航 共筑鴻蒙生態(tài)——HDD上海站·鴻蒙原生
    的頭像 發(fā)表于 05-18 09:48 ?1521次閱讀

    華為所有新手機(jī)將搭載鴻蒙 余承東:2025年起華為新品將全部搭載原生鴻蒙系統(tǒng)

    鴻蒙兩個(gè)選擇,但是2015年華為新品將全部搭載原生鴻蒙。 Mate70 / Pro / Pro+ 及 Mate X6 系列旗艦手機(jī)支持到手即可升級(jí)
    的頭像 發(fā)表于 11-27 15:42 ?4529次閱讀

    鴻蒙原生繪圖API基礎(chǔ)高階繪制之旅(進(jìn)階版)

    theme: hydrogen 家人們,還記得上次一起探索的鴻蒙繪圖API基礎(chǔ)用法嗎?上手是不是特別容易!今天,咱們就接著深入,開啟進(jìn)階版的學(xué)習(xí),解鎖更多復(fù)雜又炫酷的繪圖技能,讓你的
    的頭像 發(fā)表于 03-16 15:57 ?530次閱讀