【发布时间】:2021-03-02 00:45:27
【问题描述】:
我正在使用 C# WPF 构建一个应用程序。我正在使用 MVVM 架构。我想在给定坐标的图像上显示一些字母。到目前为止,我唯一能做的就是使用“几何”类渲染一些形状,比如矩形。
网格是图像(PNG 文件)
下面是我当前的视图模型和 XAML 文件代码。
视图模型
public class InspectionGridViewModel : RegionViewModelBase
{
public ObservableCollection<Drawing> Drawings { get; set; }
public InspectionGridViewModel(IRegionManager regionManager, ILogger<InspectionGridViewModel> logger, MainModuleConfiguration configuration) : base(regionManager, logger)
{
PlotMarkersInTheGrid();
}
public void PlotMarkersInTheGrid()
{
Drawings = new ObservableCollection<Drawing>();
Drawings.Add(new Drawing
{
Geometry = new StreamGeometry(),
Fill = Brushes.LightBlue,
Stroke = Brushes.Blue,
StrokeThickness = 2
});
Drawings.Add(new Drawing
{
Geometry = new RectangleGeometry(new Rect(50, 150, 100, 60)),
Fill = Brushes.LightGreen,
Stroke = Brushes.Green,
StrokeThickness = 2
});
}
}
public class Drawing
{
public Geometry Geometry { get; set; }
public Brush Fill { get; set; }
public Brush Stroke { get; set; }
public double StrokeThickness { get; set; }
}
XAML 文件
<ItemsControl ItemsSource="{Binding Drawings}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Path Data="{Binding Geometry}"
Fill="{Binding Fill}"
Stroke="{Binding Stroke}"
StrokeThickness="{Binding StrokeThickness}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我想知道的第一件事。这可能吗?如果是这样,任何人都可以帮助我吗?
【问题讨论】: