AxisDataViewModel.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using CommunityToolkit.Mvvm.ComponentModel;
  2. using LiveChartsCore;
  3. using LiveChartsCore.Defaults;
  4. using LiveChartsCore.SkiaSharpView;
  5. using LiveChartsCore.SkiaSharpView.Painting;
  6. using LiveChartsCore.SkiaSharpView.VisualElements;
  7. using SkiaSharp;
  8. using System.Collections.ObjectModel;
  9. using System.Drawing;
  10. namespace B20UVLog.ViewModels
  11. {
  12. internal class AxisDataViewModel : ObservableObject
  13. {
  14. private static SKColor _SKColor1 = new(0, 140, 214);
  15. private static SKColor _SKColor2 = new(103, 194, 58);
  16. private static SKColor _SKColor3 = new(230, 162, 60);
  17. private static SKColor _SKColor4 = new(245, 108, 108);
  18. private static SKColor _SKColor5 = new(144, 147, 153);
  19. private readonly ObservableCollection<ObservableValue> _observableValues;
  20. public AxisDataViewModel()
  21. {
  22. _observableValues = [new(3), new(1), new(4), new(1), new(5), new(9), new(2), new(6)];
  23. Series =
  24. [
  25. //new ColumnSeries<ObservableValue>
  26. //{
  27. // Name = "Bar",
  28. // Values = _observableValues,
  29. // Fill = GenSolidColorPaint(_SKColor2)
  30. //},
  31. new LineSeries<ObservableValue>
  32. {
  33. Name = "Line1",
  34. Values = _observableValues,
  35. Stroke = GenSolidColorPaint(_SKColor1),
  36. GeometryStroke = GenSolidColorPaint(_SKColor1),
  37. Fill = null,
  38. },
  39. new LineSeries<ObservableValue>
  40. {
  41. Name = "Line2",
  42. Values = [new(6), new(2), new(9), new(5), new(1), new(4), new(1), new(3)],
  43. Stroke = GenSolidColorPaint(_SKColor2),
  44. GeometryStroke = GenSolidColorPaint(_SKColor2),
  45. Fill = null,
  46. },
  47. ];
  48. }
  49. private static SolidColorPaint GenSolidColorPaint(SKColor color, float strokeThickness = 4)
  50. {
  51. return new SolidColorPaint(color)
  52. {
  53. StrokeThickness = strokeThickness,
  54. };
  55. }
  56. public ObservableCollection<ISeries> Series { get; set; }
  57. public LabelVisual Title { get; set; } =
  58. new LabelVisual
  59. {
  60. Text = "标题",
  61. TextSize = 25,
  62. Padding = new LiveChartsCore.Drawing.Padding(15),
  63. Paint = new SolidColorPaint
  64. {
  65. Color = SKColors.Black,
  66. SKTypeface = SKFontManager.Default.MatchCharacter('汉'),
  67. },
  68. };
  69. }
  70. }