日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

【開發(fā)者說】開發(fā)案例:使用canvas實(shí)現(xiàn)圖表系列之折線圖

HarmonyOS開發(fā)者 ? 來源:未知 ? 2023-12-13 16:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

# 開發(fā)者說 #

【開發(fā)者說】欄目是為HarmonyOS開發(fā)者提供的展示和分享平臺(tái),在這里,大家可以發(fā)表自己的技術(shù)洞察和見解,也可以展示自己的開發(fā)心得和成果。

歡迎大家積極投稿,后臺(tái)回復(fù)【投稿】,即可獲得投稿渠道。期待你們的分享~

由于對(duì)HarmonyOS的興趣與開發(fā)需求,我已經(jīng)打卡學(xué)習(xí)ArkTS語言28天了。在模擬開發(fā)歷史項(xiàng)目的時(shí)候,會(huì)經(jīng)常需要使用到圖表這類樣式展示,我決定結(jié)合之前學(xué)習(xí)的canvas繪畫知識(shí),自己寫一個(gè)折線圖組件,希望對(duì)各位開發(fā)者有所幫助。

功能結(jié)構(gòu)

實(shí)現(xiàn)一個(gè)公共組件的時(shí)候,首先分析一下大概的實(shí)現(xiàn)結(jié)構(gòu)以及開發(fā)思路,方便我們少走彎路,也可以使組件更加容易拓展,維護(hù)性更強(qiáng)。然后我會(huì)把功能逐個(gè)拆開來講,這樣大家才能學(xué)習(xí)到更詳細(xì)的內(nèi)容。下面簡單闡述下折線圖組件的功能結(jié)構(gòu):

wKgZomV5ZvGAGzrqAABM_95KNDw782.png以上是基礎(chǔ)的功能結(jié)構(gòu)框架,包含一些比較簡單的基礎(chǔ)功能,后續(xù)還有點(diǎn)擊觸發(fā)、動(dòng)畫等功能也會(huì)規(guī)劃進(jìn)去。這一期我們先實(shí)現(xiàn)上面這些基礎(chǔ)的功能,后續(xù)再慢慢拓展。

公共屬性

一個(gè)組件肯定會(huì)有一些公共的屬性作為動(dòng)態(tài)參數(shù),便于組件之間的信息傳遞,我們分別講解一下五個(gè)公共屬性的作用:
  1. 畫布的寬度(cWidth)和高度(cHeight),這個(gè)是最基本的。但是我這里控制是非必傳,默認(rèn)值都是100%就可以了。

  2. 畫布的內(nèi)部留白間距(cSpace)。主要是用來控制內(nèi)容區(qū)與畫布外框的距離,避免繪畫的內(nèi)容被截掉。

  3. 字體大?。╢ontSize)。主要是來控制整個(gè)繪畫內(nèi)容的字體大小,全局性,避免每個(gè)小功能都需要傳字體大小。

  4. 字體顏色(color)。與字體大小的功能一致。

  5. 圖表數(shù)據(jù)(data)。用來存儲(chǔ)圖表內(nèi)容的數(shù)組,其中name與value是必傳的。

以下是具體的代碼:


	
 // 圖表數(shù)據(jù)的特征接口
interface interface_data {
  name: string | number;
  value: string | number;
  [key: string]: any;
}


// 圖表的特征接口
interface interface_option {
  cWidth?: string | number,
  cHeight?: string | number,
  fontSize?: string | number,
  color?: string,
  cSpace?: number,
  data?: interface_data[]
}


// option 默認(rèn)值
const def_option: interface_option = {
  cWidth: '100%',
  cHeight: '100%',
  fontSize: 10,
  color: '#333',
  cSpace: 20,
  data: []
}


@Component
export struct McLineChart {
  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
  @State options: interface_option = {}
  aboutToAppear() {
    this.options = Object.assign({}, def_option, this.options)
  }
  build() {
    Canvas(this.context)
      .width(this.options.cWidth)
      .height(this.options.cHeight)
      .onReady(() => {
        
      })
  }
}
(左右滑動(dòng)查看更多)

繪畫坐標(biāo)軸

繪畫圖表內(nèi)容區(qū)部分,首先是繪畫坐標(biāo)軸,坐標(biāo)軸分為X軸跟Y軸,我們要先開始畫Y軸,原因是:y軸上要顯示文本標(biāo)簽,如果一開始沒有得到文本標(biāo)簽對(duì)應(yīng)的寬度最大值,那么Y軸跟X軸的起點(diǎn)坐標(biāo)就會(huì)有偏差,會(huì)導(dǎo)致繪畫全部錯(cuò)位,下圖是完整的坐標(biāo)軸的效果。

wKgZomV5ZvGAbMiTAAAlHkuEnbc035.png

1.繪畫Y軸

Y軸整體是由軸線、分割線、刻度線、文本標(biāo)簽四個(gè)部分組成的,四個(gè)部分都有先后關(guān)系,而且包含一定的算法邏輯,下面簡單用一個(gè)概念圖進(jìn)行講解。

wKgZomV5ZvGASmFWAAA3pYDyH9Y940.png

首先用500*500的矩形作為我們這次的畫布,我們可以在圖上看到Y(jié)軸整體包含了文本標(biāo)簽、Y軸線、分割線、刻度線四個(gè)部分。而canvas繪畫基本都是通過坐標(biāo)來定位的,Y軸整體的四個(gè)部分的起點(diǎn)與結(jié)束坐標(biāo)都互相有關(guān)系,甚至需要把內(nèi)部間距、分割間距、y軸線高度、文本最大的寬度四個(gè)屬性計(jì)算在內(nèi)。以上是概念與思路,接下來我們逐一講解代碼:

1、計(jì)算得到文本最長寬度(maxNameW),我們可以從圖中看到,不論是y軸線、刻度線還是分割線的起點(diǎn)坐標(biāo)都是需要內(nèi)容間距、文本標(biāo)簽、文本標(biāo)簽與分割線間隔相加計(jì)算得到,而為了保持對(duì)齊,所以我們需要計(jì)算出文本最長寬度。而y軸的文本一般都是數(shù)據(jù)(data)對(duì)應(yīng)的數(shù)值,所以我們需要得到傳入數(shù)據(jù)(data)中的最大值。然后講最大值分割成五等分。以下就是計(jì)算獲取最大文本寬度的代碼,部分邏輯我也會(huì)寫在代碼上:


	
build() {
    Canvas(this.context)
      .width(this.options.cWidth)
      .height(this.options.cHeight)
      .backgroundColor(this.options.backgroundColor)
      .onReady(() => {
        const values: number[] = this.options.data.map((item) => Number(item.value || 0))
        const maxValue = Math.max(...values)
        let maxNameW = 0
        let cSpiltNum = 5 // 分割等分
        let cSpiltVal = maxValue / cSpiltNum // 計(jì)算分割間距
        for(var i = 0; i <= this.options.data.length; i++){
          // 用最大值除于分割等分得到每一個(gè)文本的間隔值,而每一次遍歷用間隔值乘于i就能得到每個(gè)刻度對(duì)應(yīng)的數(shù)值了,計(jì)算得到得知需要保留整數(shù)且轉(zhuǎn)成字符串
          const text = (cSpiltVal * i).toFixed(0)
          const textWidth = this.context.measureText(text).width; // 獲取文字的長度
          maxNameW = textWidth > maxNameW ? textWidth : maxNameW // 每次進(jìn)行最大值的匹配
        }
      })
}

左右滑動(dòng)查看更多

2、繪畫文本標(biāo)簽,我們可以從圖中看到文本標(biāo)簽的x坐標(biāo)只跟內(nèi)部間距有關(guān),而且我們從上面代碼就已經(jīng)得到每個(gè)刻度的分割間距了,從而可以得到每個(gè)文本的y軸。


	
.onReady(() => {
   ....
   for(var i = 0; i <= this.options.data.length; i++){
     ...
     // 繪畫文本標(biāo)簽
     this.context.fillText(text, this.options.cSpace, cSpiltVal * (this.options.data.length - i) + this.options.cSpace , 0);
   }
})

左右滑動(dòng)查看更多

3、繪畫刻度線。我們可以從概念圖得到,刻度線的起點(diǎn)x坐標(biāo)算法是:內(nèi)部間距(cSpace)加最長文本寬度(maxNameW)加上文本與刻度線的間距,起點(diǎn)y坐標(biāo)則跟文本一樣,通過分割間距與下角標(biāo)的關(guān)系得到每個(gè)刻度的y坐標(biāo);而終點(diǎn)x坐標(biāo)則是刻度線的長度,終點(diǎn)y坐標(biāo)則跟起點(diǎn)的y坐標(biāo)一樣,我設(shè)置默認(rèn)長度是5,這樣就能得到我們的刻度線了。代碼如下:


	
.onReady(() => {
  ....
  const length = this.options.data.length
  for(var i = 0; i <= length; i++){
    ...
  }
  // 上面是獲取最長文本寬度的代碼
  // 畫線的方法
  function drawLine(x, y, X, Y){
    this.context.beginPath();
    this.context.moveTo(x, y);
    this.context.lineTo(X, Y);
    this.context.stroke();
    this.context.closePath();
  }
  for(var i = 0; i <= length; i++){
    const item = this.options.data[i]
    // 繪畫文本標(biāo)簽
    ctx.fillText(text, this.options.cSpace,  cSpiltVal * (this.data.length - i) + this.options.cSpace, 0);
    // 內(nèi)部間距+文本長度
    const scaleX = this.options.cSpace + maxNameW
    // 通過數(shù)據(jù)最大值算出等分間隔,從而計(jì)算出每一個(gè)的終點(diǎn)坐標(biāo)
    const scaleY = cSpiltVal * (length - i) + this.options.cSpace
    // 這里的5就是我設(shè)置文本跟刻度線的間隔與刻度線的長度
    drawLine(scaleX, scaleY, scaleX + 5 + 5, scaleY);
  }
})

左右滑動(dòng)查看更多

4、繪畫y軸線。繼續(xù)分析概覽圖,從圖中我們可以得到:y軸線的起點(diǎn)x坐標(biāo)的算法是:內(nèi)部間距(cSpace)加最長文本寬度(maxNameW)加上文本與刻度線的間距以及刻度線長度,起點(diǎn)y坐標(biāo)則是內(nèi)部上間距;而終點(diǎn)x坐標(biāo)與起點(diǎn)x坐標(biāo)相同,終點(diǎn)y坐標(biāo)算法是:畫布高度減去上下兩邊的內(nèi)部間距。通過以上計(jì)算關(guān)系就能繪畫出y軸線了。代碼如下:


	
.onReady(() => {
  ...
  // 上面是繪畫其他組成部分代碼
   const startX = this.options.cSpace + maxNameW + 5 + 5
   const startY = this.options.cSpace
   const endX = startX
   const endY = this.context.height - (this.options.cSpace * 2)
   drawLine(startX, startY, endX, endY); // 繪畫y軸
})

左右滑動(dòng)查看更多

5、繪畫分割線。其實(shí)從圖中可以看出分割線與刻度線差不多,起點(diǎn)x坐標(biāo)算法是:在刻度線起點(diǎn)x坐標(biāo)基礎(chǔ)上加刻度線長度;起點(diǎn)y軸與刻度線相同。而終點(diǎn)的x坐標(biāo)算法:畫布寬度減去起點(diǎn)x坐標(biāo);終點(diǎn)的y坐標(biāo)與起點(diǎn)的y坐標(biāo)相同。具體代碼如下:


	
.onReady(() => {
  ....
  // 上面是獲取最長文本寬度的代碼
  for(var i = 0; i <= length; i++){
    const item = this.options.data[i]
    // 繪畫文本標(biāo)簽跟刻度
    ...
    // 繪畫分割線
    const splitX = scaleX + 5 + 5
    const splitY = scaleY
    drawLine(splitX, splitY, this.context.width - splitX - this.options.cSpace, splitY);
  }
})

左右滑動(dòng)查看更多

2.繪畫X軸

繪畫完Y軸之后,我們接著繪畫X軸, X軸與Y軸繪畫邏輯一致,只是方向不同而已。具體的算法就不一一詳解,可以參考一下概念圖。

wKgZomV5ZvGAABuzAABKE6UgmGg938.png

而與繪畫Y軸不一致的在于:

  1. 最長對(duì)象不一樣。Y軸最長是文本寬度;而X軸需要獲取的最長是文本高度。

  2. 間隔分割數(shù)不一樣。Y軸是自定義的分割數(shù);而X軸分割線是實(shí)際數(shù)據(jù)的長度。

  3. 分割間距長度算法不一樣。Y軸算法是用數(shù)據(jù)最大值處于自定義的分割數(shù);而X軸算法是用畫布寬度減去(左右兩邊的內(nèi)部間隙以及Y軸寬度(文本最長寬度加上刻度線寬度)),再除去數(shù)據(jù)的長度,得到每個(gè)間隔的長度。

除了上面三點(diǎn)需要注意的,其他的就是調(diào)換一下計(jì)算的位置。X軸整體的代碼如下:


	
.onReady(() => {
  const cSpace = this.options.cSpace
  // 上面是繪制y軸的代碼
  ....
  // 繪制x軸
  // 獲取每個(gè)分割線的間距:this.context.width - 20為x軸的長度
  let xSplitSpacing = parseInt(String((this.context.width - cSpace * 2 - maxNameW) / this.options.data.length))
  let x = 0;
  for(var i = 0; i <= this.options.data.length; i++){
    // 繪畫分割線
    x = xSplitSpacing * (i + 1) // 計(jì)算每個(gè)數(shù)值的x坐標(biāo)值
    this.drawLine(x + cSpace + maxNameW, this.context.height - cSpace, x + cSpace + maxNameW, cSpace);
    // 繪制刻度
    this.drawLine(x + cSpace + maxNameW, this.context.height - cSpace, x + cSpace + maxNameW, this.context.height - cSpace);
    // 繪制文字刻度標(biāo)簽
    const text = this.options.data[i].name
    const textWidth = this.context.measureText(text).width; // 獲取文字的長度
    // 這里文本的x坐標(biāo)需要減去本身文本寬度的一半,這樣才能居中顯示, y坐標(biāo)這是畫布高度減去內(nèi)部間距即可
    this.context.fillText(text, x + cSpace + maxNameW - textWidth / 2, this.context.height - cSpace, 0);
  }
this.context.save();
  this.context.rotate(-Math.PI/2);
  this.context.restore();
})
左右滑動(dòng)查看更多

繪畫折線區(qū)

繪畫完坐標(biāo)軸之后,就可以來繪畫折線區(qū)的內(nèi)容了。也是整個(gè)畫布重點(diǎn)的部分。折線區(qū)分為三個(gè)部分:繪畫折線、繪畫標(biāo)點(diǎn)、繪畫文本。

1.繪畫折線

wKgZomV5ZvGAa7PUAABP1Dqu08o709.png

從上面的圖可以看出折線直接就是把實(shí)際數(shù)據(jù)的數(shù)值轉(zhuǎn)成x跟y坐標(biāo),再通過連線連接起來。而每一個(gè)轉(zhuǎn)折點(diǎn)的x坐標(biāo)算法跟x軸的刻度或者文本是一樣的,而y坐標(biāo)是實(shí)際數(shù)值通過一定算法轉(zhuǎn)成我們需要的高度。x坐標(biāo)我們已經(jīng)獲取了,只要是攻克我們的y坐標(biāo)即可。可以通過圖來觀察一下在畫布中與實(shí)際數(shù)據(jù)的關(guān)系:

wKgZomV5ZvKAKO0ZAABZX6Uc3Q8134.png

首先Y軸的高度代表的是實(shí)際數(shù)據(jù)的最大值,這個(gè)我們繪畫Y軸的時(shí)候就得到的結(jié)果,那我們則可以算出Y軸高度與實(shí)際數(shù)據(jù)的縮放倍數(shù)(scale),而折線的的每個(gè)y坐標(biāo)對(duì)應(yīng)的也是實(shí)際數(shù)值,需要把實(shí)際數(shù)值轉(zhuǎn)換成畫布中高度,那么就用實(shí)際數(shù)值乘與剛剛得到的縮放倍數(shù)(scale)就能得到轉(zhuǎn)化后的高度了。

雖然我們已經(jīng)得到每個(gè)轉(zhuǎn)折點(diǎn)縮放后的高度,但是如果要跟Y軸坐標(biāo)一一對(duì)應(yīng)的y坐標(biāo)的畫,還需要用畫布的高度減去下邊內(nèi)部高度加x軸高度,再減去縮放后的實(shí)際高度。這樣算出來的才是我們想要的y坐標(biāo)值,大概算法關(guān)系已經(jīng)知道了,以下是最終代碼:
.onReady(() => {
  ...
  // 上面是繪制x軸跟y軸的代碼
  // 繪畫折線
  const ySacle = (this.context.height - cSpace *2) / maxValue // 計(jì)算出y軸與實(shí)際最大值的縮放倍數(shù)
  //連線
  this.context.beginPath();
  for(var i=0; i< this.options.data.length; i++){
    const dotVal = String(this.options.data[i].value);
    const x = xSplitSpacing * (i + 1) + cSpace + maxNameW // 計(jì)算每個(gè)數(shù)值的x坐標(biāo)值
    const y = this.context.height - cSpace - parseInt(dotVal * ySacle); // 畫布的高度減去下邊內(nèi)部高度加x軸高度,再減去縮放后的實(shí)際高度
    if(i==0){
      // 第一個(gè)作為起點(diǎn)
      this.context.moveTo( x, y );
    }else{
      this.context.lineTo( x, y );
    }
  }
  ctx.stroke();
})

左右滑動(dòng)查看更多

2.繪畫標(biāo)點(diǎn)、文本標(biāo)簽

畫完折線我們基本能得到很多東西,比如折線上每個(gè)轉(zhuǎn)折點(diǎn)的x跟y坐標(biāo)值。這樣對(duì)我們繪畫標(biāo)點(diǎn)與文本標(biāo)簽就很方便了:

.onReady(() => {
  ...
  // 上面是繪制x軸跟y軸的代碼
  // 繪畫折線
  const ySacle = (this.context.height - cSpace *2) / maxValue // 計(jì)算出y軸與實(shí)際最大值的縮放倍數(shù)
  this.context.beginPath();
  for(var i=0; i< this.options.data.length; i++){
    // 繪畫折線代碼
    ...
    // 繪制標(biāo)點(diǎn)
    drawArc(x, y);
    // 繪制文本標(biāo)簽
    const textWidth = this.context.measureText(dotVal).width; // 獲取文字的長度
    const textHeight = this.context.measureText(dotVal).height; // 獲取文字的長度
    this.context.fillText(dotVal, x - textWidth / 2, y - textHeight / 2); // 文字
  }


  function drawArc( x, y ){
    this.context.beginPath();
    this.context.arc( x, y, 3, 0, Math.PI*2 );
    this.context.fill();
    this.context.closePath();
  }
  this.context.stroke();
})

左右滑動(dòng)查看更多

最終效果如下:wKgZomV5ZvKAcrV8AABTPnN5Lfc164.png

總結(jié)

以上是本次技術(shù)分析,希望能對(duì)大家有所啟發(fā),也祝愿各位開發(fā)者能開發(fā)出理想的效果,后續(xù)我們會(huì)把chart相關(guān)系列的組件封裝到組件庫發(fā)布到市場(chǎng)上,這樣可以直接開箱即用了。敬請(qǐng)期待吧,后續(xù)還有很多技術(shù)的分享,不要錯(cuò)過!


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

    關(guān)注

    80

    文章

    2157

    瀏覽量

    36321

原文標(biāo)題:【開發(fā)者說】開發(fā)案例:使用canvas實(shí)現(xiàn)圖表系列之折線圖

文章出處:【微信號(hào):HarmonyOS_Dev,微信公眾號(hào):HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    大屏設(shè)計(jì)一站式搞定!HT Drawing 海量圖表任你選

    、性能高效、上手便捷 的可視化開發(fā)工具集。 Drawing 庫提供全??梢暬芰Γ?豐富的圖表組件: 涵蓋折線圖、柱狀圖、餅圖、雷達(dá)圖、桑基圖、弦圖、樹圖、詞云、矢量地圖等 20+ 種專業(yè)圖表
    的頭像 發(fā)表于 01-20 11:36 ?333次閱讀
    大屏設(shè)計(jì)一站式搞定!HT Drawing 海量<b class='flag-5'>圖表</b>任你選

    2025華為開發(fā)者大賽暨開發(fā)者年度會(huì)議成功舉辦

    開發(fā)者大賽總決賽、CEO圓桌、主論壇大咖分享、分論壇技術(shù)演講、開發(fā)者展區(qū)&CodeLabs等多元議題,推動(dòng)云開發(fā)工具鏈、智能體開發(fā)、具身智能等前沿技術(shù)實(shí)戰(zhàn)應(yīng)用,助力
    的頭像 發(fā)表于 12-31 13:32 ?1085次閱讀

    探秘 CYSBSYSKIT - DEV - 01 快速物聯(lián)網(wǎng)連接開發(fā)者套件

    探秘 CYSBSYSKIT - DEV - 01 快速物聯(lián)網(wǎng)連接開發(fā)者套件 引言 在物聯(lián)網(wǎng)迅猛發(fā)展的今天,快速、高效地實(shí)現(xiàn)物聯(lián)網(wǎng)連接是開發(fā)者們追求的目標(biāo)。CYSBSYSKIT - DEV - 01
    的頭像 發(fā)表于 12-21 15:35 ?917次閱讀

    2025開源鴻蒙開發(fā)者激勵(lì)計(jì)劃正式啟動(dòng)

    11月21日,2025開放原子開發(fā)者大會(huì)盛大啟幕,聚焦“AI共智,開源共享”主題,吸引了來自全球的開發(fā)者、企業(yè)技術(shù)領(lǐng)袖、社區(qū)維護(hù)及高校科研力量參會(huì)。作為大會(huì)的重要組成部分,開源鴻蒙技術(shù)分論壇同期
    的頭像 發(fā)表于 11-27 14:44 ?856次閱讀

    元服務(wù)發(fā)布配置開發(fā)者服務(wù)信息

    您作為開發(fā)者的相關(guān)信息將面向元服務(wù)發(fā)布區(qū)域的用戶公開,其中客服聯(lián)系方式可能會(huì)提供給用戶,用于咨詢相關(guān)問題。 登錄AppGallery Connect,點(diǎn)擊“APP與元服務(wù)”。 選擇要發(fā)布的元服務(wù)
    發(fā)表于 10-31 17:58

    2025開放原子開發(fā)者大會(huì)11月啟幕

    開發(fā)者年度盛會(huì)即將登場(chǎng)!2025開放原子開發(fā)者大會(huì)將于11月21-22日,在北京北人亦創(chuàng)國際會(huì)展中心盛大召開。大會(huì)以“一切為了開發(fā)者”為主題,匯聚全球開源智慧——國內(nèi)外優(yōu)秀開發(fā)者、學(xué)術(shù)
    的頭像 發(fā)表于 10-24 14:05 ?1155次閱讀

    創(chuàng)龍 瑞芯微 RK3588 國產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—ISP圖像處理開發(fā)案

    創(chuàng)龍科技研發(fā)的 TL3588-EVM 評(píng)估板具備強(qiáng)大視頻處理能力,可滿足多場(chǎng)景視頻開發(fā)需求。為助力開發(fā)者快速上手,本文整理 7 個(gè)實(shí)用視頻開發(fā)案例,涵蓋從采集到顯示的全流程,詳細(xì)說明各案例的硬件連接、參數(shù)配置與代碼解析,幫助
    的頭像 發(fā)表于 10-21 15:57 ?1140次閱讀
    創(chuàng)龍 瑞芯微 RK3588 國產(chǎn)2.4GHz八核 工業(yè)<b class='flag-5'>開發(fā)</b>板—ISP圖像處理<b class='flag-5'>開發(fā)案</b>例

    NVIDIA DRIVE AGX Thor開發(fā)者套件重磅發(fā)布

    這款由 NVIDIA DriveOS 7 驅(qū)動(dòng)的開發(fā)者套件能夠幫助開發(fā)者們打造出更安全的智能汽車和交通解決方案。
    的頭像 發(fā)表于 09-04 11:20 ?1641次閱讀

    曙光網(wǎng)絡(luò)SugonRI開發(fā)者社區(qū)正式上線

    在人工智能與工業(yè)深度融合的大潮中,工業(yè)軟件正在成為推動(dòng)產(chǎn)業(yè)升級(jí)的關(guān)鍵引擎。為了讓更多開發(fā)者快速掌握工業(yè)級(jí)編程技術(shù)、共享行業(yè)實(shí)踐成果,曙光網(wǎng)絡(luò)正式推出開發(fā)者社區(qū)——曙睿(SugonRI)開發(fā)者網(wǎng)站
    的頭像 發(fā)表于 09-04 09:58 ?1184次閱讀

    矽速科技正式入駐 RuyiSDK 開發(fā)者社區(qū),共建 RISC-V 開發(fā)者生態(tài)!

    近日,深圳矽速科技正式入駐RuyiSDK開發(fā)者社區(qū),攜手社區(qū)共同推動(dòng)RISC-V技術(shù)的發(fā)展與廣泛應(yīng)用,為開發(fā)者提供一個(gè)更加便捷高效的開發(fā)環(huán)境。關(guān)于RuyiSDKRuyiSDK是中國科學(xué)院軟件研究所
    的頭像 發(fā)表于 07-10 11:00 ?1425次閱讀
    矽速科技正式入駐 RuyiSDK <b class='flag-5'>開發(fā)者</b>社區(qū),共建 RISC-V <b class='flag-5'>開發(fā)者</b>生態(tài)!

    HDC 2025開發(fā)者主題演講精彩回顧

    日前,華為開發(fā)者大會(huì)(HDC 2025)進(jìn)入第二天,行業(yè)領(lǐng)袖、技術(shù)專家、全球開發(fā)者齊聚現(xiàn)場(chǎng),共同見證這場(chǎng)科技盛會(huì)。在開發(fā)者主題演講中,華為技術(shù)專家深入解析HarmonyOS的最新技術(shù)、體驗(yàn)創(chuàng)新以及
    的頭像 發(fā)表于 07-09 11:20 ?1509次閱讀

    華為正式啟動(dòng)HarmonyOS 6開發(fā)者Beta

    在2025年華為開發(fā)者大會(huì)(HDC)上,華為正式啟動(dòng)HarmonyOS 6開發(fā)者Beta,并全面展示一年多以來與合作伙伴共建鴻蒙生態(tài)的創(chuàng)新成果。
    的頭像 發(fā)表于 06-24 15:42 ?1038次閱讀

    深開鴻C(jī)EO王成錄:開發(fā)者是開源鴻蒙生態(tài)的原點(diǎn)

    5月24日,深開鴻正式發(fā)布全國首款面向開發(fā)者的開源鴻蒙學(xué)習(xí)平臺(tái)——開鴻Bot系列產(chǎn)品。這是開源鴻蒙在開發(fā)者終端領(lǐng)域的關(guān)鍵落地,更是深開鴻貫徹“以開發(fā)者為中心”理念的里程碑舉措。深開鴻C(jī)
    的頭像 發(fā)表于 05-26 12:06 ?1036次閱讀
    深開鴻C(jī)EO王成錄:<b class='flag-5'>開發(fā)者</b>是開源鴻蒙生態(tài)的原點(diǎn)

    開鴻Bot系列:為開源鴻蒙開發(fā)者而生!

    昨日,深開鴻正式宣布,開鴻Bot系列產(chǎn)品——開鴻BotBook與開鴻BotMini全面開啟預(yù)售。該系列面向開源鴻蒙開發(fā)者量身打造,搭載基于OpenHarmony深度定制的KaihongOS桌面
    的頭像 發(fā)表于 05-16 16:06 ?1511次閱讀
    開鴻Bot<b class='flag-5'>系列</b>:為開源鴻蒙<b class='flag-5'>開發(fā)者</b>而生!

    為開源鴻蒙開發(fā)者而生,開鴻Bot系列今日預(yù)售啟動(dòng)

    操作系統(tǒng),實(shí)現(xiàn)從國產(chǎn)高性能芯片到操作系統(tǒng)的全棧自主化,構(gòu)建起一站式的開源鴻蒙學(xué)習(xí)與開發(fā)平臺(tái)。 融合開發(fā)與辦公場(chǎng)景,打造開源鴻蒙生態(tài)的“第一站” 作為“開發(fā)者平臺(tái)+輕辦公終端”的融合產(chǎn)品
    的頭像 發(fā)表于 05-15 14:12 ?818次閱讀
    為開源鴻蒙<b class='flag-5'>開發(fā)者</b>而生,開鴻Bot<b class='flag-5'>系列</b>今日預(yù)售啟動(dòng)
    鸡东县| 奉贤区| 马山县| 全南县| 沐川县| 拉萨市| 德格县| 通辽市| 柳林县| 德令哈市| 黎平县| 内黄县| 云林县| 洱源县| 绥化市| 彭州市| 台中县| 哈尔滨市| 凉城县| 德安县| 兴仁县| 东乡族自治县| 和龙市| 新野县| 武定县| 棋牌| 利津县| 修武县| 沈丘县| 铜鼓县| 庆城县| 临洮县| 宜宾县| 凤山市| 通道| 双峰县| 江城| 绩溪县| 类乌齐县| 辽中县| 高雄县|