国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Inhaltsverzeichnis
Polylinie
Bezier-Kurve dritter Ordnung
Heim WeChat-Applet Mini-Programmentwicklung Bringen Sie Schritt für Schritt bei, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen (mit Code).

Bringen Sie Schritt für Schritt bei, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen (mit Code).

Feb 11, 2022 pm 07:59 PM
canvas Wechat -Applet

Wie zeichne ich ein Wetterliniendiagramm im WeChat-Applet? Im folgenden Artikel erfahren Sie, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen und eine Bezier-Kurve dritter Ordnung verwenden, um die Temperaturpunkte anzupassen, um sie glatt zu machen und am unteren Rand der Kurve eine Hintergrundfarbe zu erhalten . Ich hoffe, es ist für alle hilfreich!

Bringen Sie Schritt für Schritt bei, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen (mit Code).

Polylinie

Rendering:

Bringen Sie Schritt für Schritt bei, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen (mit Code).

Benutzerdefiniertes Komponentenliniendiagramm

<canvas type="2d" id="line" class="line-class" style="width:{{width}}px;height:{{height}}px" />
Component({
  externalClasses: [&#39;line-class&#39;],
  properties: {
    width: String,
    height: String,
    data: Array,
  },
  observers: {
    width() {
      // 這里監(jiān)聽 width 變化重繪 canvas
      // 動態(tài)傳入 width 好像只能這樣了..
      const query = this.createSelectorQuery();
      query
        .select(&#39;#line&#39;)
        .fields({ node: true, size: true })
        .exec(res => {
          const canvas = res[0].node;
          const ctx = canvas.getContext(&#39;2d&#39;);
          const width = res[0].width; // 畫布寬度
          const height = res[0].height; // 畫布高度

          console.log(`寬度: ${width}, 高度: ${height}`);

          const dpr = wx.getSystemInfoSync().pixelRatio;
          canvas.width = width * dpr;
          canvas.height = height * dpr;
          ctx.scale(dpr, dpr);

          // 開始繪圖
          this.drawLine(ctx, width, height, this.data.data);
        });
    },
  },
  methods: {
    drawLine(ctx, width, height, data) {
      const Max = Math.max(...data);
      const Min = Math.min(...data);

      // 把 canvas 的寬度, 高度按一定規(guī)則平分
      const startX = width / (data.length * 2), // 起始點的橫坐標 X
        baseY = height * 0.9, // 基線縱坐標 Y
        diffX = width / data.length,
        diffY = (height * 0.7) / (Max - Min); // 高度預(yù)留 0.2 寫溫度

      ctx.beginPath();
      ctx.textAlign = &#39;center&#39;;
      ctx.font = &#39;13px Microsoft YaHei&#39;;
      ctx.lineWidth = 2;
      ctx.strokeStyle = &#39;#ABDCFF&#39;;

      // 畫折線圖的線
      data.forEach((item, index) => {
        const x = startX + diffX * index,
          y = baseY - (item - Min) * diffY;

        ctx.fillText(`${item}°`, x, y - 10);
        ctx.lineTo(x, y);
      });
      ctx.stroke();

      // 畫折線圖背景
      ctx.lineTo(startX + (data.length - 1) * diffX, baseY); // 基線終點
      ctx.lineTo(startX, baseY); // 基線起點
      const lingrad = ctx.createLinearGradient(0, 0, 0, height * 0.7);
      lingrad.addColorStop(0, &#39;rgba(255,255,255,0.9)&#39;);
      lingrad.addColorStop(1, &#39;rgba(171,220,255,0)&#39;);
      ctx.fillStyle = lingrad;
      ctx.fill();

      // 畫折線圖上的小圓點
      ctx.beginPath();
      data.forEach((item, index) => {
        const x = startX + diffX * index,
          y = baseY - (item - Min) * diffY;

        ctx.moveTo(x, y);
        ctx.arc(x, y, 3, 0, 2 * Math.PI);
      });
      ctx.fillStyle = &#39;#0396FF&#39;;
      ctx.fill();
    },
  },
});

Daten sind das Temperaturarray, z. B. [1, 2, ...]

weil nein Wir wissen, wie viele Temperaturwerte es gibt, daher wird die Breite hier dynamisch übergeben

Es gibt ein kleines Problem: Wenn die Breite zu gro? ist, zeigt die reale Maschine sie nicht an ...

 // 獲取 scroll-view 的總寬度
 wx.createSelectorQuery()
      .select(&#39;.hourly&#39;)
      .boundingClientRect(rect => {
        this.setData({
          scrollWidth: rect.right - rect.left,
        });
      })
      .exec();
<view class="title">小時概述</view>
<scroll-view scroll-x scroll-y class="scroll" show-scrollbar="{{false}}" enhanced="{{true}}">
    <view class="hourly">
      <view wx:for="{{time}}" wx:key="index">{{item}}</view>
    </view>
    <line-chart line-class="line" width="{{scrollWidth}}" height="100" data="{{temp}}" />
</scroll-view>

Schreiben Sie hier scroll-x und scroll-y, sonst gibt es ein Problem mit dem absoluten Positionierungsversatz, und ich wei? nicht warum

Bringen Sie Schritt für Schritt bei, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen (mit Code).

.scroll {
  position: relative;
  height: 150px;
  width: 100%;
}

.hourly {
  display: flex;
  height: 150px;
  position: absolute;
  top: 0;
}

.hourly > view {
  min-width: 3.5em;
  text-align: center;
}

.line { // 折線圖絕對定位到底部
  position: absolute;
  bottom: 0;
}

Die hier verwendete absolute Positionierung dient eigentlich dazu, den Effekt eines Liniendiagramms wie Moji zu simulieren Wetter und jeden Tag in einem Block, also stündlich, muss mit Scroll-Ansicht usw. kombiniert werden. Hoch muss die Leinwand positioniert werden

Haupts?chlich, weil ich nicht wei?, wie ich Moji Weather erreichen kann, also kann ich das nur vorübergehend tun

Bringen Sie Schritt für Schritt bei, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen (mit Code).

Bezier-Kurve dritter Ordnung

Rendering

Bringen Sie Schritt für Schritt bei, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen (mit Code).

emmm, es scheint, dass es nicht dasselbe ist. Nicht sehr glatt

Kontrollpunkte berechnen

Schreiben Sie zuerst a Punktklasse

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }
}

Canvas Bezier-Kurven-Zeichenwerkzeug (karlew.com)

http://wx.karlew.com/canvas/bezier/

über die obige Website k?nnen Sie die Bedeutung jedes Parameters dritter Ordnung erfahren Bezier-Kurve

Bringen Sie Schritt für Schritt bei, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen (mit Code).

Das hei?t, bei Verwendung von bezierCurveTo ist der letzte Punkt der n?chste Punkt und die ersten beiden sind Kontrollpunkte

Berechnung von Kontrollpunkten Referenz: Methode zur Bestimmung von Bezier-Kurven-Kontrollpunkten – Baidu-Bibliothek

https://wenku.baidu.com/view/c790f8d46bec0975f565e211.html

Kondensiert ist es

Bringen Sie Schritt für Schritt bei, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen (mit Code).

wobei a und b beliebige positive Zahlen sein k?nnen

Definieren Sie also eine Methode zur Berechnung der Kontrollpunkte A und B von ein bestimmter Punkt

/**
 * 計算當前點的貝塞爾曲線控制點
 * @param {Point} previousPoint: 前一個點
 * @param {Point} currentPoint: 當前點
 * @param {Point} nextPoint1: 下一個點
 * @param {Point} nextPoint2: 下下個點
 * @param {Number} scale: 系數(shù)
 */
calcBezierControlPoints(
  previousPoint,
  currentPoint,
  nextPoint1,
  nextPoint2,
  scale = 0.25
) {
  let x = currentPoint.x + scale * (nextPoint1.x - previousPoint.x);
  let y = currentPoint.y + scale * (nextPoint1.y - previousPoint.y);

  const controlPointA = new Point(x, y); // 控制點 A

  x = nextPoint1.x - scale * (nextPoint2.x - currentPoint.x);
  y = nextPoint1.y - scale * (nextPoint2.y - currentPoint.y);

  const controlPointB = new Point(x, y); // 控制點 B

  return { controlPointA, controlPointB };
}

Hier ist die Skala a und b, aber machen Sie ihre Werte gleich

Aber der erste Punkt hat keinen previousPoint und der vorletzte Punkt hat keinen nextPoint2

Wenn der Punkt also der erste ist, Verwenden Sie currentPoint anstelle von previousPoint

Wenn es der vorletzte Punkt ist, verwenden Sie nextPoint1 anstelle von nextPoint2

Bringen Sie Schritt für Schritt bei, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen (mit Code).

Was den letzten Punkt betrifft, müssen Sie nichts tun, da der dritte Parameter von bezierCurveTo der n?chste Punkt ist. Sie müssen nur Koordinaten angeben, um eine Verbindung herzustellen. Es ist also nicht erforderlich, Kontrollpunkte zu berechnen:

/**
 * 繪制貝塞爾曲線
 * ctx.bezierCurveTo(控制點1, 控制點2, 當前點);
 */
drawBezierLine(ctx, data, options) {
  const { startX, diffX, baseY, diffY, Min } = options;

  ctx.beginPath();
  // 先移動到第一個點
  ctx.moveTo(startX, baseY - (data[0] - Min) * diffY);

  data.forEach((e, i) => {
    let curPoint, prePoint, nextPoint1, nextPoint2, x, y;

    // 當前點
    x = startX + diffX * i;
    y = baseY - (e - Min) * diffY;
    curPoint = new Point(x, y);

    // 前一個點
    x = startX + diffX * (i - 1);
    y = baseY - (data[i - 1] - Min) * diffY;
    prePoint = new Point(x, y);

    // 下一個點
    x = startX + diffX * (i + 1);
    y = baseY - (data[i + 1] - Min) * diffY;
    nextPoint1 = new Point(x, y);

    // 下下個點
    x = startX + diffX * (i + 2);
    y = baseY - (data[i + 2] - Min) * diffY;
    nextPoint2 = new Point(x, y);

    if (i === 0) {
      // 如果是第一個點, 則前一個點用當前點代替
      prePoint = curPoint;
    } else if (i === data.length - 2) {
      // 如果是倒數(shù)第二個點, 則下下個點用下一個點代替
      nextPoint2 = nextPoint1;
    } else if (i === data.length - 1) {
      // 最后一個點直接退出
      return;
    }

    const { controlPointA, controlPointB } = this.calcBezierControlPoints(
      prePoint,
      curPoint,
      nextPoint1,
      nextPoint2
    );

    ctx.bezierCurveTo(
      controlPointA.x,
      controlPointA.y,
      controlPointB.x,
      controlPointB.y,
      nextPoint1.x,
      nextPoint1.y
    );
  });

  ctx.stroke();
},

[Verwandte Lernempfehlungen:

Mini-Tutorial zur Programmentwicklung

]

Das obige ist der detaillierte Inhalt vonBringen Sie Schritt für Schritt bei, wie Sie mit Canvas ein Wetterliniendiagramm im WeChat-Applet zeichnen (mit Code).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
Das Miniprogramm Xianyu WeChat wurde offiziell gestartet Das Miniprogramm Xianyu WeChat wurde offiziell gestartet Feb 10, 2024 pm 10:39 PM

Das offizielle WeChat-Miniprogramm von Xianyu wurde stillschweigend gestartet. Im Miniprogramm k?nnen Sie private Nachrichten posten, um mit K?ufern/Verk?ufern zu kommunizieren, pers?nliche Informationen und Bestellungen anzuzeigen, nach Artikeln zu suchen usw. Wenn Sie neugierig sind, was ist das Xianyu WeChat Mini? Programm namens? Werfen wir einen Blick darauf. Wie hei?t das Xianyu WeChat-Applet? Antwort: Xianyu, Leerlauftransaktionen, Gebrauchtverk?ufe, Bewertungen und Recycling. 1. Im Miniprogramm k?nnen Sie inaktive Nachrichten posten, mit K?ufern/Verk?ufern über private Nachrichten kommunizieren, pers?nliche Informationen und Bestellungen einsehen, nach bestimmten Artikeln suchen usw. 2. Auf der Seite des Miniprogramms gibt es eine Homepage, in der N?he, Posten Sie Leerlauf, Nachrichten und meine 5 Funktionen. 3. Wenn Sie es nutzen m?chten, müssen Sie die WeChat-Zahlung aktivieren, bevor Sie es kaufen k?nnen.

Implementieren Sie Bildfiltereffekte in WeChat-Miniprogrammen Implementieren Sie Bildfiltereffekte in WeChat-Miniprogrammen Nov 21, 2023 pm 06:22 PM

Implementieren von Bildfiltereffekten in WeChat-Miniprogrammen Mit der Popularit?t von Social-Media-Anwendungen wenden Menschen immer h?ufiger Filtereffekte auf Fotos an, um den künstlerischen Effekt und die Attraktivit?t der Fotos zu verst?rken. Bildfiltereffekte k?nnen auch in WeChat-Miniprogrammen erzielt werden, wodurch Benutzer interessantere und kreativere Fotobearbeitungsfunktionen erhalten. In diesem Artikel wird erl?utert, wie Bildfiltereffekte in WeChat-Miniprogrammen implementiert werden, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir die Canvas-Komponente im WeChat-Applet verwenden, um Bilder zu laden und zu bearbeiten. Die Canvas-Komponente kann auf der Seite verwendet werden

Implementieren Sie den Dropdown-Menüeffekt im WeChat-Applet Implementieren Sie den Dropdown-Menüeffekt im WeChat-Applet Nov 21, 2023 pm 03:03 PM

Um den Dropdown-Menüeffekt in WeChat-Miniprogrammen zu implementieren, sind spezifische Codebeispiele erforderlich. Mit der Popularit?t des mobilen Internets sind WeChat-Miniprogramme zu einem wichtigen Bestandteil der Internetentwicklung geworden, und immer mehr Menschen haben begonnen, darauf zu achten Verwenden Sie WeChat Mini-Programme. Die Entwicklung von WeChat-Miniprogrammen ist einfacher und schneller als die herk?mmliche APP-Entwicklung, erfordert jedoch auch die Beherrschung bestimmter Entwicklungsf?higkeiten. Bei der Entwicklung von WeChat-Miniprogrammen sind Dropdown-Menüs eine h?ufige UI-Komponente, um eine bessere Benutzererfahrung zu erzielen. In diesem Artikel wird detailliert beschrieben, wie der Dropdown-Menüeffekt im WeChat-Applet implementiert wird, und es werden praktische Informationen bereitgestellt

Wie hei?t das Xianyu WeChat-Applet? Wie hei?t das Xianyu WeChat-Applet? Feb 27, 2024 pm 01:11 PM

Das offizielle WeChat-Miniprogramm von Xianyu wurde stillschweigend gestartet. Es bietet Benutzern eine praktische Plattform, die es ihnen erm?glicht, ungenutzte Artikel einfach zu ver?ffentlichen und zu handeln. Im Miniprogramm k?nnen Sie über private Nachrichten mit K?ufern oder Verk?ufern kommunizieren, pers?nliche Informationen und Bestellungen einsehen und nach den gewünschten Artikeln suchen. Wie genau hei?t Xianyu im WeChat-Miniprogramm? Dieses Tutorial stellt es Ihnen im Detail vor. Benutzer, die es wissen m?chten, folgen bitte diesem Artikel und lesen Sie weiter! Wie hei?t das Xianyu WeChat-Applet? Antwort: Xianyu, Leerlauftransaktionen, Gebrauchtverk?ufe, Bewertungen und Recycling. 1. Im Miniprogramm k?nnen Sie inaktive Nachrichten posten, mit K?ufern/Verk?ufern über private Nachrichten kommunizieren, pers?nliche Informationen und Bestellungen einsehen, nach bestimmten Artikeln suchen usw. 2. Auf der Seite des Miniprogramms gibt es eine Homepage, in der N?he, Post-Leerlauf, Nachrichten und meine 5 Funktionen;

Das WeChat-Applet implementiert die Funktion zum Hochladen von Bildern Das WeChat-Applet implementiert die Funktion zum Hochladen von Bildern Nov 21, 2023 am 09:08 AM

WeChat-Applet implementiert Bild-Upload-Funktion Mit der Entwicklung des mobilen Internets ist das WeChat-Applet zu einem unverzichtbaren Bestandteil des Lebens der Menschen geworden. WeChat-Miniprogramme bieten nicht nur eine Fülle von Anwendungsszenarien, sondern unterstützen auch vom Entwickler definierte Funktionen, einschlie?lich Funktionen zum Hochladen von Bildern. In diesem Artikel wird erl?utert, wie die Bild-Upload-Funktion im WeChat-Applet implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. 1. Vorbereitende Arbeiten Bevor wir mit dem Schreiben von Code beginnen, müssen wir die WeChat-Entwicklertools herunterladen und installieren und uns als WeChat-Entwickler registrieren. Gleichzeitig müssen Sie auch WeChat verstehen

Implementieren Sie den Bildrotationseffekt im WeChat-Applet Implementieren Sie den Bildrotationseffekt im WeChat-Applet Nov 21, 2023 am 08:26 AM

Um den Bildrotationseffekt im WeChat Mini-Programm zu implementieren, sind spezifische Codebeispiele erforderlich. Das WeChat Mini-Programm ist eine leichtgewichtige Anwendung, die Benutzern umfangreiche Funktionen und eine gute Benutzererfahrung bietet. In Miniprogrammen k?nnen Entwickler verschiedene Komponenten und APIs nutzen, um unterschiedliche Effekte zu erzielen. Unter diesen ist der Bildrotationseffekt ein g?ngiger Animationseffekt, der dem Miniprogramm interessante und visuelle Effekte verleihen kann. Um Bildrotationseffekte in WeChat-Miniprogrammen zu erzielen, müssen Sie die vom Miniprogramm bereitgestellte Animations-API verwenden. Das Folgende ist ein spezifisches Codebeispiel, das zeigt, wie das geht

Verwenden Sie das WeChat-Applet, um einen Karussellwechseleffekt zu erzielen Verwenden Sie das WeChat-Applet, um einen Karussellwechseleffekt zu erzielen Nov 21, 2023 pm 05:59 PM

Verwenden Sie das WeChat-Applet, um den Karussellwechseleffekt zu erzielen. Das WeChat-Applet ist eine leichtgewichtige Anwendung, die einfach und effizient zu entwickeln und zu verwenden ist. In WeChat-Miniprogrammen ist es eine h?ufige Anforderung, Karussellwechseleffekte zu erzielen. In diesem Artikel wird erl?utert, wie Sie mit dem WeChat-Applet den Karussell-Umschalteffekt erzielen, und es werden konkrete Codebeispiele aufgeführt. Fügen Sie zun?chst eine Karussellkomponente zur Auslagerungsdatei des WeChat-Applets hinzu. Sie k?nnen beispielsweise den Tag &lt;swiper&gt; verwenden, um den Schalteffekt des Karussells zu erzielen. In dieser Komponente k?nnen Sie b übergeben

Lernen Sie das Canvas-Framework kennen und erkl?ren Sie das h?ufig verwendete Canvas-Framework im Detail Lernen Sie das Canvas-Framework kennen und erkl?ren Sie das h?ufig verwendete Canvas-Framework im Detail Jan 17, 2024 am 11:03 AM

Entdecken Sie das Canvas-Framework: Um die h?ufig verwendeten Canvas-Frameworks zu verstehen, sind spezifische Codebeispiele erforderlich. Einführung: Canvas ist eine in HTML5 bereitgestellte Zeichen-API, mit der wir umfangreiche Grafik- und Animationseffekte erzielen k?nnen. Um die Effizienz und den Komfort des Zeichnens zu verbessern, haben viele Entwickler verschiedene Canvas-Frameworks entwickelt. In diesem Artikel werden einige h?ufig verwendete Canvas-Frameworks vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern ein tieferes Verst?ndnis für die Verwendung dieser Frameworks zu vermitteln. 1. EaselJS-Framework Ea

See all articles