Angular ラジアル ゲージの概要
Angular Radial Gauge コンポーネントは、針、目盛り、範囲、ラベルなどの視覚要素をサポートし、定義済みの図形やスケールを表示できます。IgxRadialGaugeComponent
には、アニメーション化されたトランジションのサポートも組み込まれています。アニメーションは、transitionDuration
プロパティの設定で簡単にカスタマイズできます。
Angular ラジアル ゲージの例
以下のサンプルは、同じ IgxRadialGaugeComponent
でいくつかのプロパティを設定して全く異なるゲージにする方法を示します。
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { CommonModule } from "@angular/common" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxRadialGaugeModule } from "igniteui-angular-gauges" ;
import { IgxButtonModule } from "igniteui-angular" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
],
imports : [
BrowserModule,
BrowserAnimationsModule,
CommonModule,
FormsModule,
IgxRadialGaugeModule,
IgxButtonModule
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー import { AfterViewInit, Component, ViewChild } from "@angular/core" ;
import { SweepDirection } from "igniteui-angular-core" ;
import { IgxRadialGaugeComponent } from "igniteui-angular-gauges" ;
import { IgxRadialGaugeRangeComponent } from "igniteui-angular-gauges" ;
import { RadialGaugeBackingShape } from "igniteui-angular-gauges" ;
import { RadialGaugeNeedleShape } from "igniteui-angular-gauges" ;
import { RadialGaugePivotShape } from "igniteui-angular-gauges" ;
import { RadialGaugeScaleOversweepShape } from "igniteui-angular-gauges" ;
@Component ({
standalone : false ,
selector : "app-root" ,
styleUrls : ["./app.component.scss" ],
templateUrl : "./app.component.html"
})
export class AppComponent implements AfterViewInit {
@ViewChild ("radialGauge" , { static : true })
public radialGauge: IgxRadialGaugeComponent;
private shouldAnimate: boolean = false ;
public ngAfterViewInit(): void {
this .AnimateToGauge3();
}
public AnimateToGauge4(): void {
if (this .shouldAnimate){
this .radialGauge.transitionDuration = 500 ;
}
this .radialGauge.height = "330px" ;
this .radialGauge.width = "100%" ;
this .radialGauge.minimumValue = 0 ;
this .radialGauge.maximumValue = 80 ;
this .radialGauge.value = 10 ;
this .radialGauge.interval = 10 ;
this .radialGauge.labelExtent = 0.6 ;
this .radialGauge.labelInterval = 10 ;
this .radialGauge.font = "10px Verdana,Arial" ;
this .radialGauge.scaleStartAngle = 150 ;
this .radialGauge.scaleEndAngle = 30 ;
this .radialGauge.scaleBrush = "#0b8fed" ;
this .radialGauge.scaleOversweepShape = RadialGaugeScaleOversweepShape.Auto;
this .radialGauge.scaleSweepDirection = SweepDirection.Clockwise;
this .radialGauge.scaleEndExtent = 0.825 ;
this .radialGauge.scaleStartExtent = 0.775 ;
this .radialGauge.minorTickStartExtent = 0.7 ;
this .radialGauge.minorTickEndExtent = 0.75 ;
this .radialGauge.tickStartExtent = 0.675 ;
this .radialGauge.tickEndExtent = 0.75 ;
this .radialGauge.backingShape = RadialGaugeBackingShape.Fitted;
this .radialGauge.backingBrush = "#fcfcfc" ;
this .radialGauge.backingOutline = "#d6d6d6" ;
this .radialGauge.backingOversweep = 5 ;
this .radialGauge.backingCornerRadius = 10 ;
this .radialGauge.backingOuterExtent = 0.9 ;
this .radialGauge.needleShape = RadialGaugeNeedleShape.NeedleWithBulb;
this .radialGauge.needlePivotShape = RadialGaugePivotShape.CircleOverlay;
this .radialGauge.needleEndExtent = 0.5 ;
this .radialGauge.needlePointFeatureExtent = 0.3 ;
this .radialGauge.needlePivotWidthRatio = 0.2 ;
this .radialGauge.needleBrush = "#9f9fa0" ;
this .radialGauge.needleOutline = "#9f9fa0" ;
this .radialGauge.needlePivotBrush = "#9f9fa0" ;
this .radialGauge.needlePivotOutline = "#9f9fa0" ;
this .radialGauge.tickBrush = "rgba(51, 51, 51, 1)" ;
this .radialGauge.minorTickBrush = "rgba(73, 73, 73, 1)" ;
this .radialGauge.minorTickCount = 6 ;
this .radialGauge.ranges.clear();
this .shouldAnimate = true ;
}
public AnimateToGauge3(): void {
if (this .shouldAnimate){
this .radialGauge.transitionDuration = 500 ;
}
this .radialGauge.height = "330px" ;
this .radialGauge.width = "100%" ;
this .radialGauge.minimumValue = 0 ;
this .radialGauge.maximumValue = 50 ;
this .radialGauge.value = 25 ;
this .radialGauge.interval = 5 ;
this .radialGauge.labelInterval = 5 ;
this .radialGauge.labelExtent = 0.71 ;
this .radialGauge.font = "10px Verdana,Arial" ;
this .radialGauge.isNeedleDraggingEnabled = true ;
this .radialGauge.needleEndExtent = 0.5 ;
this .radialGauge.needleShape = RadialGaugeNeedleShape.Triangle;
this .radialGauge.needleEndWidthRatio = 0.03 ;
this .radialGauge.needleStartWidthRatio = 0.05 ;
this .radialGauge.needlePivotShape = RadialGaugePivotShape.CircleOverlay;
this .radialGauge.needlePivotWidthRatio = 0.15 ;
this .radialGauge.needleBaseFeatureWidthRatio = 0.15 ;
this .radialGauge.needleBrush = "#79797a" ;
this .radialGauge.needleOutline = "#79797a" ;
this .radialGauge.needlePivotBrush = "#79797a" ;
this .radialGauge.needlePivotOutline = "#79797a" ;
this .radialGauge.minorTickCount = 4 ;
this .radialGauge.minorTickEndExtent = 0.625 ;
this .radialGauge.minorTickStartExtent = 0.6 ;
this .radialGauge.minorTickStrokeThickness = 1 ;
this .radialGauge.minorTickBrush = "#79797a" ;
this .radialGauge.tickStartExtent = 0.6 ;
this .radialGauge.tickEndExtent = 0.65 ;
this .radialGauge.tickStrokeThickness = 2 ;
this .radialGauge.tickBrush = "#79797a" ;
this .radialGauge.scaleStartAngle = 120 ;
this .radialGauge.scaleEndAngle = 60 ;
this .radialGauge.scaleBrush = "#d6d6d6" ;
this .radialGauge.scaleOversweepShape = RadialGaugeScaleOversweepShape.Fitted;
this .radialGauge.scaleSweepDirection = SweepDirection.Clockwise;
this .radialGauge.scaleEndExtent = 0.57 ;
this .radialGauge.scaleStartExtent = 0.5 ;
this .radialGauge.backingBrush = "#fcfcfc" ;
this .radialGauge.backingOutline = "#d6d6d6" ;
this .radialGauge.backingStrokeThickness = 5 ;
this .radialGauge.backingShape = RadialGaugeBackingShape.Circular;
const range1 = new IgxRadialGaugeRangeComponent();
range1.startValue = 5 ;
range1.endValue = 15 ;
const range2 = new IgxRadialGaugeRangeComponent();
range2.startValue = 15 ;
range2.endValue = 35 ;
const range3 = new IgxRadialGaugeRangeComponent();
range3.startValue = 35 ;
range3.endValue = 45 ;
this .radialGauge.rangeBrushes = [ "#F86232" , "#DC3F76" , "#7446B9" ];
this .radialGauge.rangeOutlines = [ "#F86232" , "#DC3F76" , "#7446B9" ];
this .radialGauge.ranges.clear();
this .radialGauge.ranges.add(range1);
this .radialGauge.ranges.add(range2);
this .radialGauge.ranges.add(range3);
for (let i = 0 ; i < this .radialGauge.ranges.count; i++) {
const range = this .radialGauge.ranges.item(i);
range.innerStartExtent = 0.5 ;
range.innerEndExtent = 0.5 ;
range.outerStartExtent = 0.57 ;
range.outerEndExtent = 0.57 ;
}
this .shouldAnimate = true ;
}
public AnimateToGauge2(): void {
if (this .shouldAnimate){
this .radialGauge.transitionDuration = 500 ;
}
this .radialGauge.height = "330px" ;
this .radialGauge.width = "100%" ;
this .radialGauge.minimumValue = 100 ;
this .radialGauge.maximumValue = 200 ;
this .radialGauge.value = 125 ;
this .radialGauge.scaleStartAngle = 135 ;
this .radialGauge.scaleEndAngle = 45 ;
this .radialGauge.scaleBrush = "transparent" ;
this .radialGauge.scaleSweepDirection = SweepDirection.Clockwise;
this .radialGauge.backingOutline = "white" ;
this .radialGauge.backingBrush = "white" ;
this .radialGauge.needleEndExtent = 0.8 ;
this .radialGauge.needleShape = RadialGaugeNeedleShape.Triangle;
this .radialGauge.needlePivotShape = RadialGaugePivotShape.Circle;
this .radialGauge.needlePivotWidthRatio = 0.1 ;
this .radialGauge.needleBrush = "#79797a" ;
this .radialGauge.needleOutline = "#79797a" ;
this .radialGauge.tickBrush = "transparent" ;
this .radialGauge.minorTickBrush = "transparent" ;
this .radialGauge.labelInterval = 100 ;
this .radialGauge.labelExtent = 1 ;
this .radialGauge.font = "15px Verdana,Arial" ;
const range1 = new IgxRadialGaugeRangeComponent();
range1.startValue = 100 ;
range1.endValue = 150 ;
const range2 = new IgxRadialGaugeRangeComponent();
range2.startValue = 150 ;
range2.endValue = 200 ;
this .radialGauge.rangeBrushes = [ "#32f845" , "#bf32f8" ];
this .radialGauge.rangeOutlines = [ "#32f845" , "#bf32f8" ];
this .radialGauge.ranges.clear();
this .radialGauge.ranges.add(range1);
this .radialGauge.ranges.add(range2);
for (let i = 0 ; i < this .radialGauge.ranges.count; i++) {
const range = this .radialGauge.ranges.item(i);
range.innerStartExtent = 0.3 ;
range.innerEndExtent = 0.3 ;
range.outerStartExtent = 0.9 ;
range.outerEndExtent = 0.9 ;
}
this .shouldAnimate = true ;
}
public AnimateToGauge1(): void {
if (this .shouldAnimate){
this .radialGauge.transitionDuration = 500 ;
}
this .radialGauge.height = "330px" ;
this .radialGauge.width = "100%" ;
this .radialGauge.minimumValue = 0 ;
this .radialGauge.maximumValue = 10 ;
this .radialGauge.value = 7.5 ;
this .radialGauge.scaleStartAngle = 200 ;
this .radialGauge.scaleEndAngle = -20 ;
this .radialGauge.scaleBrush = "transparent" ;
this .radialGauge.scaleSweepDirection = SweepDirection.Clockwise;
this .radialGauge.backingOutline = "white" ;
this .radialGauge.backingBrush = "white" ;
this .radialGauge.needleEndExtent = 0.8 ;
this .radialGauge.needleShape = RadialGaugeNeedleShape.Triangle;
this .radialGauge.needlePivotShape = RadialGaugePivotShape.Circle;
this .radialGauge.needlePivotWidthRatio = 0.1 ;
this .radialGauge.needleBrush = "#79797a" ;
this .radialGauge.needleOutline = "#79797a" ;
this .radialGauge.tickBrush = "transparent" ;
this .radialGauge.minorTickBrush = "transparent" ;
this .radialGauge.labelInterval = 10 ;
this .radialGauge.labelExtent = 1 ;
this .radialGauge.font = "15px Verdana,Arial" ;
const range1 = new IgxRadialGaugeRangeComponent();
range1.startValue = 0 ;
range1.endValue = 5 ;
const range2 = new IgxRadialGaugeRangeComponent();
range2.startValue = 5 ;
range2.endValue = 10 ;
this .radialGauge.rangeBrushes = [ "#a4bd29" , "#F86232" ];
this .radialGauge.rangeOutlines = [ "#a4bd29" , "#F86232" ];
this .radialGauge.ranges.clear();
this .radialGauge.ranges.add(range1);
this .radialGauge.ranges.add(range2);
for (let i = 0 ; i < this .radialGauge.ranges.count; i++) {
const range = this .radialGauge.ranges.item(i);
range.innerStartExtent = 0.3 ;
range.innerEndExtent = 0.3 ;
range.outerStartExtent = 0.9 ;
range.outerEndExtent = 0.9 ;
}
this .shouldAnimate = true ;
}
}
ts コピー <div class ="container vertical" >
<div class ="options horizontal" >
<button (click )="AnimateToGauge1()"
class ="options-button" > Animation #1</button >
<button (click )="AnimateToGauge2()"
class ="options-button" > Animation #2</button >
<button (click )="AnimateToGauge3()"
class ="options-button" > Animation #3</button >
<button (click )="AnimateToGauge4()"
class ="options-button" > Animation #4</button >
</div >
<div class ="container" >
<igx-radial-gauge
#radialGauge
height ="330px"
width ="100%"
value =25
interval =5
minimumValue =0
maximumValue =50
labelInterval =5
labelExtent =0.71
minorTickCount =4
minorTickEndExtent =.625
minorTickStartExtent =.6
minorTickStrokeThickness =1
minorTickBrush = "#79797a"
tickStartExtent =.6
tickEndExtent =.65
tickStrokeThickness =2
tickBrush = "#79797a"
needleShape ="Triangle"
needleEndWidthRatio =0.03
needleStartWidthRatio =0.05
needlePivotShape ="CircleOverlay"
needlePivotWidthRatio =0.15
needleBaseFeatureWidthRatio =0.15
needleBrush ="#79797a"
needleOutline ="#79797a"
needlePivotBrush ="#79797a"
needlePivotOutline ="#79797a"
isNeedleDraggingEnabled =true
backingBrush ="#fcfcfc"
backingOutline ="#d6d6d6"
backingStrokeThickness =5
scaleStartAngle =120
scaleEndAngle =60
scaleBrush ="#d6d6d6"
rangeBrushes ="#F86232, #DC3F76, #7446B9"
rangeOutlines ="#F86232, #DC3F76, #7446B9" >
</igx-radial-gauge >
</div >
</div >
html コピー
このサンプルが気に入りましたか? 完全な Ignite UI for Angularツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。
依存関係
gauge コンポーネントをインストールするときに core パッケージもインストールする必要があります。
npm install --save igniteui-angular-core
npm install --save igniteui-angular-gauges
cmd
モジュールの要件
IgxRadialGaugeComponent
を作成するには、以下のモジュールが必要です。
import { IgxRadialGaugeModule } from 'igniteui-angular-gauges' ;
@NgModule ({
imports : [
IgxRadialGaugeModule
]
})
export class AppModule {}
ts
使用方法
以下のコードは針およびスケールで 3 つの比較範囲を含むラジアル ゲージを作成する方法を紹介します。
<igx-radial-gauge height ="400px" width ="400px"
value ="25"
interval ="5"
minimumValue ="0"
maximumValue ="100" >
<igx-radial-gauge-range startValue ="0"
endValue ="30"
brush ="red" >
</igx-radial-gauge-range >
<igx-radial-gauge-range startValue ="30"
endValue ="60"
brush ="yellow" >
</igx-radial-gauge-range >
<igx-radial-gauge-range startValue ="60"
endValue ="100"
brush ="green" >
</igx-radial-gauge-range >
</igx-radial-gauge >
html
バッキング
ゲージには、スケールの後ろ側に描かれた背景図形があり、図形はゲージの背景として動作します。
バッキング要素はラジアル ゲージ コントロールの背景と境界線を表します。常に最初に描画される要素で針、ラベルやメモリなどの残りの要素はその上のオーバーレイです。
バッキングは、円形またはフィットにできます。円形の場合は 360 度の円形のゲージが作成されますが、一方フィット図形の場合は scaleStartAngle
および scaleEndAngle
プロパティで円弧部分が塗りつぶされます。これには、backingShape
プロパティを設定します。
<igx-radial-gauge
backingShape ="Fitted"
backingBrush ="#fcfcfc"
backingOutline ="DodgerBlue"
backingOversweep =5
backingCornerRadius =10
backingStrokeThickness =5
backingOuterExtent =0.8
backingInnerExtent =0.15
scaleStartAngle =135 scaleEndAngle =45
height ="300px" width ="300px"
minimumValue =0 value =50
maximumValue =80 interval =10 >
</igx-radial-gauge >
html
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { CommonModule } from "@angular/common" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxRadialGaugeModule } from "igniteui-angular-gauges" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
],
imports : [
BrowserModule,
BrowserAnimationsModule,
CommonModule,
FormsModule,
IgxRadialGaugeModule
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component, OnInit, ViewChild } from "@angular/core" ;
import { IgxRadialGaugeComponent } from "igniteui-angular-gauges" ;
@Component ({
standalone : false ,
selector : "app-root" ,
styleUrls : ["./app.component.scss" ],
templateUrl : "./app.component.html"
})
export class AppComponent implements OnInit {
@ViewChild ("radialGauge" , { static : true })
public radialGauge: IgxRadialGaugeComponent;
public ngOnInit(): void {
this .radialGauge.scaleBrush = "#e8e8e8" ;
}
}
ts コピー <div class ="container vertical" >
<igx-radial-gauge #radialGauge
backingShape ="Fitted"
backingBrush ="#fcfcfc"
backingOutline ="DodgerBlue"
backingOversweep =5
backingCornerRadius =10
backingStrokeThickness =5
backingOuterExtent =0.8
backingInnerExtent =0.15
scaleStartAngle =135
scaleEndAngle =45
scaleBrush ="#dddddd"
height ="300px" width ="300px"
minimumValue =0 value =50
maximumValue =80 interval =10 >
</igx-radial-gauge >
</div >
html コピー
スケール
スケールは視覚要素で、minimumValue
と maximumValue
値を設定してゲージの値範囲全体をハイライト表示できます。バッキングとともにゲージの全体的な図形を定義します。scaleStartAngle
と scaleEndAngle
プロパティは、スケールの円弧の境界線を定義します。scaleSweepDirection
プロパティが、スケールが時計回りまたは反時計回りのどちらの方向に動くかを指定します。scaleBrush
、scaleStartExtent
、scaleEndExtent
プロパティを設定してスケールの外観をカスタマイズできます。
<igx-radial-gauge
scaleStartAngle =135
scaleEndAngle =45
scaleBrush ="DodgerBlue"
scaleSweepDirection ="Clockwise"
scaleOversweep =1
scaleOversweepShape ="Fitted"
scaleStartExtent =0.45
scaleEndExtent =0.575
height ="300px" width ="300px"
minimumValue =0 value =50
maximumValue =80 interval =10 >
</igx-radial-gauge >
html
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { CommonModule } from "@angular/common" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxRadialGaugeModule } from "igniteui-angular-gauges" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
],
imports : [
BrowserModule,
BrowserAnimationsModule,
CommonModule,
FormsModule,
IgxRadialGaugeModule
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component, OnInit, ViewChild } from "@angular/core" ;
import { IgxRadialGaugeComponent } from "igniteui-angular-gauges" ;
@Component ({
standalone : false ,
selector : "app-root" ,
styleUrls : ["./app.component.scss" ],
templateUrl : "./app.component.html"
})
export class AppComponent {
@ViewChild ("radialGauge" , { static : true })
public radialGauge: IgxRadialGaugeComponent;
}
ts コピー <div class ="container vertical" >
<igx-radial-gauge #radialGauge
scaleStartAngle =135
scaleEndAngle =45
scaleBrush ="DodgerBlue"
scaleSweepDirection ="Clockwise"
scaleOversweep =1
scaleOversweepShape ="Fitted"
scaleStartExtent =0.45
scaleEndExtent =0.575
height ="300px" width ="300px"
minimumValue =0 value =50
maximumValue =80 interval =10 >
</igx-radial-gauge >
</div >
html コピー
ラベルとタイトル
ゲージ ラベルは minimumValue
と maximumValue
の値の間で指定された間隔で数値を表示する視覚要素です。0 はゲージ中央、1 はゲージ バッキングの外側範囲を表す labelExtent
プロパティで小数を使用してラベルの配置を設定できます。fontBrush
や font
など、さまざまなスタイル プロパティを設定してラベルをカスタマイズできます。
これらの針のラベルにはそれぞれ、titleExtent
、titleAngle
、SubtitleFontSize
、highlightLabelBrush
など、フォント、角度、ブラシ、ゲージの中心からの距離を変更するために適用できるさまざまなスタイル属性があります。
<igx-radial-gauge
labelExtent =0.65
labelInterval =10
font ="11px Verdana"
fontBrush ="DodgerBlue"
height ="300px" width ="300px"
minimumValue =0 value =50
maximumValue =100 interval =10 >
</igx-radial-gauge >
html
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { CommonModule } from "@angular/common" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxRadialGaugeModule } from "igniteui-angular-gauges" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
],
imports : [
BrowserModule,
BrowserAnimationsModule,
CommonModule,
FormsModule,
IgxRadialGaugeModule
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component, OnInit, ViewChild } from "@angular/core" ;
import { IgxRadialGaugeComponent } from "igniteui-angular-gauges" ;
@Component ({
standalone : false ,
selector : "app-root" ,
styleUrls : ["./app.component.scss" ],
templateUrl : "./app.component.html"
})
export class AppComponent implements OnInit {
@ViewChild ("radialGauge" , { static : true })
public radialGauge: IgxRadialGaugeComponent;
public ngOnInit(): void {
this .radialGauge.scaleBrush = "#e8e8e8" ;
}
}
ts コピー <div class ="container vertical" >
<igx-radial-gauge #radialGauge
labelExtent =0.65
labelInterval =10
font ="11px Verdana"
fontBrush ="DodgerBlue"
titleDisplaysValue =true
subtitleText ="MPH"
height ="300px" width ="300px"
minimumValue =0 value =50
maximumValue =80 interval =10 >
</igx-radial-gauge >
</div >
html コピー
タイトルとサブタイトル
titleText
プロパティと subtitleText
プロパティが使用可能であり、どちらも針のカスタム テキストを表示するために使用できます。あるいは、titleDisplaysValue
と subtitleDisplaysValue
を true に設定すると、針の値が表示され、titleText
と subtitleText
がオーバーライドされます。したがって、タイトルにカスタム テキストを使用しながらサブタイトルで値を表示したり、その逆を行ったりすることができます。
以下に説明するように針のハイライトが表示されている場合は、highlightLabelText
を介してカスタム テキストを表示できます。それ以外の場合は、highlightLabelDisplaysValue
を有効にしてその値を表示できます。
<igx-radial-gauge
titleText ="Global Sales"
subtitleText ="2024" >
</igx-radial-gauge >
html
オプティカル スケーリング
ラジアル ゲージのラベルとタイトルにより、スケーリングを変更できます。これを有効にするには、まず opticalScalingEnabled
を true に設定します。次に、ラベルが 100% のオプティカル スケーリングを持つサイズを管理する opticalScalingSize
を設定できます。ゲージのサイズが大きくなると、ラベルのフォントも大きくなります。たとえば、このプロパティが 500 に設定され、ゲージのピクセル単位のサイズが 2 倍の 1000 になると、ラベルのフォント サイズは 200% 大きくなります。
EXAMPLE
app.module.ts
app.module.ts
app.component.ts
app.component.ts
app.component.html
app.component.html
app.component.scss
app.component.scss
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { CommonModule } from "@angular/common" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxRadialGaugeModule } from "igniteui-angular-gauges" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
],
imports : [
BrowserModule,
BrowserAnimationsModule,
CommonModule,
FormsModule,
IgxRadialGaugeModule
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { CommonModule } from "@angular/common" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxRadialGaugeModule } from "igniteui-angular-gauges" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
],
imports : [
BrowserModule,
BrowserAnimationsModule,
CommonModule,
FormsModule,
IgxRadialGaugeModule
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component, OnInit, ViewChild } from "@angular/core" ;
import { IgxRadialGaugeComponent } from "igniteui-angular-gauges" ;
@Component ({
standalone : false ,
selector : "app-root" ,
styleUrls : ["./app.component.scss" ],
templateUrl : "./app.component.html"
})
export class AppComponent implements OnInit {
@ViewChild ("radialGauge" , { static : true })
public radialGauge: IgxRadialGaugeComponent;
public ngOnInit(): void {
this .radialGauge.scaleBrush = "#e8e8e8" ;
}
public onOpticalScalingChanged = (e: any ) => {
const isEnabled = e.target.checked;
this .radialGauge.opticalScalingEnabled = isEnabled;
if (isEnabled) {
this .radialGauge.opticalScalingEnabled = true ;
}
else {
this .radialGauge.opticalScalingEnabled = false ;
}
}
public onGaugeSizeChanged = (e: any ) => {
let num: number = parseInt (e.target.value);
this .radialGauge.width = num.toString() + "%" ;
this .radialGauge.height = num.toString() + "%" ;
}
}
ts コピー import { Component, OnInit, ViewChild } from "@angular/core" ;
import { IgxRadialGaugeComponent } from "igniteui-angular-gauges" ;
@Component ({
standalone : false ,
selector : "app-root" ,
styleUrls : ["./app.component.scss" ],
templateUrl : "./app.component.html"
})
export class AppComponent implements OnInit {
@ViewChild ("radialGauge" , { static : true })
public radialGauge: IgxRadialGaugeComponent;
public ngOnInit(): void {
this .radialGauge.scaleBrush = "#e8e8e8" ;
}
public onOpticalScalingChanged = (e: any ) => {
const isEnabled = e.target.checked;
this .radialGauge.opticalScalingEnabled = isEnabled;
if (isEnabled) {
this .radialGauge.opticalScalingEnabled = true ;
}
else {
this .radialGauge.opticalScalingEnabled = false ;
}
}
public onGaugeSizeChanged = (e: any ) => {
let num: number = parseInt (e.target.value);
this .radialGauge.width = num.toString() + "%" ;
this .radialGauge.height = num.toString() + "%" ;
}
}
ts コピー <div class ="container vertical" >
<div class ="options horizontal" >
<label class ="options-label" > Optical Scaling: </label >
<label class ="options-label" > <input type ="checkbox" id ="checkbox1" checked ="true" (change )="onOpticalScalingChanged($event)" /> Resize Gauge: </label >
<input class ="options-slider" id ="slider" type ="range" min ="20" max ="100" step ="10" value ="100" (input )="onGaugeSizeChanged($event)" />
</div >
<igx-radial-gauge #radialGauge
titleDisplaysValue ="true"
titleExtent ="0.5"
subtitleText ="MPH"
subtitleExtent ="0.65"
height ="100%" width ="100%%"
minimumValue =0 value =50
maximumValue =80 interval =10
opticalScalingEnabled ="true"
opticalScalingSize ="500" >
</igx-radial-gauge >
</div >
html コピー <div class ="container vertical" >
<div class ="options horizontal" >
<label class ="options-label" > Optical Scaling: </label >
<label class ="options-label" > <input type ="checkbox" id ="checkbox1" checked ="true" (change )="onOpticalScalingChanged($event)" /> Resize Gauge: </label >
<input class ="options-slider" id ="slider" type ="range" min ="20" max ="100" step ="10" value ="100" (input )="onGaugeSizeChanged($event)" />
</div >
<igx-radial-gauge #radialGauge
titleDisplaysValue ="true"
titleExtent ="0.5"
subtitleText ="MPH"
subtitleExtent ="0.65"
height ="100%" width ="100%%"
minimumValue =0 value =50
maximumValue =80 interval =10
opticalScalingEnabled ="true"
opticalScalingSize ="500" >
</igx-radial-gauge >
</div >
html コピー
目盛
目盛は、ラジアル ゲージの中央から放射状に表示される細い線です。目盛には、主目盛および副目盛の 2 種類があり、主目盛りは minimumValue
と maximumValue
の間の interval
に表示されます。また minorTickCount
プロパティは、隣接する 2 つの主目盛間の副目盛の数を指定します。目盛りの長さは、tickStartExtent
、tickEndExtent
、minorTickStartExtent
、minorTickEndExtent
に少数値 (0 から 1 の間) を設定して制御できます。
<igx-radial-gauge
tickStartExtent =0.45
tickEndExtent =0.575
tickStrokeThickness =2
tickBrush ="DodgerBlue"
minorTickCount =4
minorTickEndExtent =0.5
minorTickStartExtent =0.575
minorTickStrokeThickness =1
minorTickBrush ="DarkViolet"
height ="300px" width ="300px"
minimumValue =0 value =50
maximumValue =80 interval =10 >
</igx-radial-gauge >
html
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { CommonModule } from "@angular/common" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxRadialGaugeModule } from "igniteui-angular-gauges" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
],
imports : [
BrowserModule,
BrowserAnimationsModule,
CommonModule,
FormsModule,
IgxRadialGaugeModule
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component, OnInit, ViewChild } from "@angular/core" ;
import { IgxRadialGaugeComponent } from "igniteui-angular-gauges" ;
@Component ({
standalone : false ,
selector : "app-root" ,
styleUrls : ["./app.component.scss" ],
templateUrl : "./app.component.html"
})
export class AppComponent implements OnInit {
@ViewChild ("radialGauge" , { static : true })
public radialGauge: IgxRadialGaugeComponent;
public ngOnInit(): void {
this .radialGauge.scaleBrush = "#e8e8e8" ;
}
}
ts コピー <div class ="container vertical" >
<igx-radial-gauge #radialGauge
tickStartExtent =0.5
tickEndExtent =0.57
tickStrokeThickness =2
tickBrush ="DodgerBlue"
minorTickCount =4
minorTickEndExtent =0.520
minorTickStartExtent =0.57
minorTickStrokeThickness =1
minorTickBrush ="DarkViolet"
height ="300px" width ="300px"
minimumValue =0 value =50
maximumValue =80 interval =10 >
</igx-radial-gauge >
</div >
html コピー
範囲
範囲に minimumValue
や maximumValue
プロパティで指定した連続値の境界をハイライト表示します。開始値と終了値を指定してゲージに複数の範囲を追加でき、各範囲には、brush
や outline
などのカスタマイズ プロパティがあります。または、rangeBrushes
や rangeOutlines
プロパティを範囲の色リストに設定することもできます。
<igx-radial-gauge
height ="300px" width ="300px"
minimumValue =0 value =50
maximumValue =80 interval =10
rangeBrushes ="red, yellow, green"
rangeOutlines ="red, yellow, green" >
<igx-radial-gauge-range
startValue =5 endValue =15 brush ="red" >
</igx-radial-gauge-range >
<igx-radial-gauge-range
startValue =15 endValue =35 brush ="yellow" >
</igx-radial-gauge-range >
<igx-radial-gauge-range
startValue =35 endValue =45 brush ="green" >
</igx-radial-gauge-range >
</igx-radial-gauge >
html
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { CommonModule } from "@angular/common" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxRadialGaugeModule } from "igniteui-angular-gauges" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
],
imports : [
BrowserModule,
BrowserAnimationsModule,
CommonModule,
FormsModule,
IgxRadialGaugeModule
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component, OnInit, ViewChild } from "@angular/core" ;
import { IgxRadialGaugeComponent } from "igniteui-angular-gauges" ;
@Component ({
standalone : false ,
selector : "app-root" ,
styleUrls : ["./app.component.scss" ],
templateUrl : "./app.component.html"
})
export class AppComponent implements OnInit {
@ViewChild ("radialGauge" , { static : true })
public radialGauge: IgxRadialGaugeComponent;
public ngOnInit(): void {
this .radialGauge.scaleBrush = "#e8e8e8" ;
}
}
ts コピー <div class ="container vertical" >
<igx-radial-gauge #radialGauge
height ="300px" width ="300px"
minimumValue =0 value =50
maximumValue =80 interval =10
rangeBrushes ="#a4bd29, #F86232"
rangeOutlines ="#a4bd29, #F86232" >
<igx-radial-gauge-range
startValue =10 endValue =25
innerStartExtent =0.50 innerEndExtent =0.50
outerStartExtent =0.57 outerEndExtent =0.57 >
</igx-radial-gauge-range >
<igx-radial-gauge-range
startValue =25 endValue =40
innerStartExtent =0.50 innerEndExtent =0.50
outerStartExtent =0.57 outerEndExtent =0.57 >
</igx-radial-gauge-range >
</igx-radial-gauge >
</div >
html コピー
針
ゲージ針は、ゲージの設定値を示す視覚要素です。針は、あらかじめ定義されたいくつかの図形の中から選択でき、ピボット図形をゲージの中心に配置できます。またピボット図形は、事前に定義された図形の 1 つを使用します。オーバーレイとアンダーレイを含むピボット図形には、図形に適用する別のピボット ブラシがあります。
サポートされている針の形とキャップは、needleShape
と needlePivotShape
プロパティで設定します。
ゲージのインタラクティブ モードを有効 (isNeedleDraggingEnabled
プロパティを使用) にするとユーザーは minimumValue
と maximumValue
の値間で針をドラッグして値を変更できるようになります。
<igx-radial-gauge
value =50
isNeedleDraggingEnabled =true
isNeedleDraggingConstrained =true
needleShape ="NeedleWithBulb"
needleBrush ="DodgerBlue"
needleOutline ="DodgerBlue"
needleEndExtent =0.475
needleStrokeThickness =1
needlePivotShape ="CircleOverlay"
needlePivotBrush ="#9f9fa0"
needlePivotOutline ="#9f9fa0"
needlePivotWidthRatio =0.2
needlePivotStrokeThickness =1
height ="300px" width ="300px"
minimumValue =0
maximumValue =80 interval =10 >
</igx-radial-gauge >
html
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { CommonModule } from "@angular/common" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxRadialGaugeModule } from "igniteui-angular-gauges" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
],
imports : [
BrowserModule,
BrowserAnimationsModule,
CommonModule,
FormsModule,
IgxRadialGaugeModule
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component, OnInit, ViewChild } from "@angular/core" ;
import { IgxRadialGaugeComponent } from "igniteui-angular-gauges" ;
@Component ({
standalone : false ,
selector : "app-root" ,
styleUrls : ["./app.component.scss" ],
templateUrl : "./app.component.html"
})
export class AppComponent implements OnInit {
@ViewChild ("radialGauge" , { static : true })
public radialGauge: IgxRadialGaugeComponent;
public ngOnInit(): void {
this .radialGauge.scaleBrush = "#e8e8e8" ;
}
}
ts コピー <div class ="container vertical" >
<igx-radial-gauge #radialGauge height ="300px" width ="300px"
isNeedleDraggingEnabled =true
isNeedleDraggingConstrained =true
needleShape ="NeedleWithBulb"
needleBrush ="DodgerBlue"
needleOutline ="DodgerBlue"
needleEndExtent =0.475
needleStrokeThickness =1
needlePivotShape ="CircleOverlay"
needlePivotBrush ="#9f9fa0"
needlePivotOutline ="#9f9fa0"
needlePivotWidthRatio =0.2
needlePivotStrokeThickness =1
value =50
minimumValue =0
maximumValue =80
interval =10 >
</igx-radial-gauge >
</div >
html コピー
針のハイライト
ラジアル ゲージを変更して、2 番目の針を表示できます。これにより、メイン針の value
の不透明度が低く表示されます。これを有効にするには、まず highlightValueDisplayMode
を Overlay に設定し、次に highlightValue
を適用します。
<igx-radial-gauge #radialGauge
labelExtent =0.65
labelInterval =10
highlightValueDisplayMode ="Overlay"
highlightValue =50
highlightLabelDisplaysValue =true
highlightLabelSnapsToNeedlePivot =true
isHighlightNeedleDraggingEnabled =true
height ="100%" width ="100%"
minimumValue =0 value =30
maximumValue =100 interval =10 >
</igx-radial-gauge >
html
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { CommonModule } from "@angular/common" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import { IgxRadialGaugeModule } from "igniteui-angular-gauges" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
],
imports : [
BrowserModule,
BrowserAnimationsModule,
CommonModule,
FormsModule,
IgxRadialGaugeModule
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component, OnInit, ViewChild } from "@angular/core" ;
import { HighlightedValueDisplayMode } from "igniteui-angular-core" ;
import { IgxRadialGaugeComponent } from "igniteui-angular-gauges" ;
@Component ({
standalone : false ,
selector : "app-root" ,
styleUrls : ["./app.component.scss" ],
templateUrl : "./app.component.html"
})
export class AppComponent implements OnInit {
@ViewChild ("radialGauge" , { static : true })
public radialGauge: IgxRadialGaugeComponent;
public ngOnInit(): void {
this .radialGauge.scaleBrush = "#e8e8e8" ;
}
}
ts コピー <div class ="container vertical" >
<igx-radial-gauge #radialGauge
labelExtent =0.65
labelInterval =10
highlightValueDisplayMode ="Overlay"
highlightValue =50
highlightLabelDisplaysValue =true
highlightLabelSnapsToNeedlePivot =true
isHighlightNeedleDraggingEnabled =true
height ="100%" width ="100%"
minimumValue =0 value =30
maximumValue =100 interval =10 >
</igx-radial-gauge >
</div >
html コピー
まとめ
上記すべてのコード スニペットを以下のコード ブロックにまとめています。プロジェクトに簡単にコピーしてブレットグラフのすべての機能を再現できます。
<igx-radial-gauge
height ="300px" width ="300px"
minimumValue =0
maximumValue =80
scaleStartAngle =135
scaleEndAngle =45
scaleBrush ="#c6c6c6"
scaleSweepDirection ="Clockwise"
scaleOversweep =1
scaleOversweepShape ="Fitted"
scaleStartExtent =0.45
scaleEndExtent =0.575
value =70
isNeedleDraggingEnabled =true
isNeedleDraggingConstrained =true
needleShape ="NeedleWithBulb"
needleBrush ="DodgerBlue"
needleOutline ="DodgerBlue"
needleEndExtent =0.475
needleStrokeThickness =1
needlePivotShape ="CircleOverlay"
needlePivotBrush ="#9f9fa0"
needlePivotOutline ="#9f9fa0"
needlePivotWidthRatio =0.2
needlePivotStrokeThickness =1
interval =10
tickStartExtent =0.45
tickEndExtent =0.575
tickStrokeThickness =2
tickBrush ="Black"
minorTickCount =4
minorTickEndExtent =0.5
minorTickStartExtent =0.575
minorTickStrokeThickness =1
minorTickBrush ="Black"
labelExtent =0.65
labelInterval =10
font ="11px Verdana"
fontBrush ="Black"
backingShape ="Fitted"
backingBrush ="#ededed"
backingOutline ="Gray"
backingOversweep =5
backingCornerRadius =10
backingStrokeThickness =5
backingOuterExtent =0.8
backingInnerExtent =0.15
rangeBrushes ="#a4bd29, #F86232"
rangeOutlines ="#a4bd29, #F86232" >
<igx-radial-gauge-range
startValue =20 endValue =40
innerStartExtent =0.45 innerEndExtent =0.45
outerStartExtent =0.57 outerEndExtent =0.57 >
</igx-radial-gauge-range >
<igx-radial-gauge-range
startValue =40 endValue =60
innerStartExtent =0.45 innerEndExtent =0.45
outerStartExtent =0.57 outerEndExtent =0.57 >
</igx-radial-gauge-range >
</igx-radial-gauge >
html
API リファレンス
以下は上記のセクションで説明した API メンバーのリストです。
その他のリソース
その他のゲージ タイプの詳細については、以下のトピックを参照してください。