WPF: Solid color ImageSource
В моем приложении я отображаю изображения, полученные из внешних библиотек DLL, путем привязки источника элемента управления Image к источнику ImageSource.
Это работает хорошо, но иногда я не получаю никаких данных из моей библиотеки DLL, и я хотел бы просто показать черное изображение. В этом случае, как я могу создать Источник изображений, который содержит только сплошной цвет?
2 ответа:
Альтернативный метод заключается в том, чтобы дать цвет фона, а не показывать изображение.
// XAML <Grid Background="Black"> <Image x:Name="imgDisplay"/> </Grid> // C# imgDisplay.Source = null; // -- OR -- imgDisplay.Visibility = Visibility.Collapsed;
Например, у вас есть изображение где-то в шаблоне, которое привязывается к какому-то свойству фото. В случае неудачи вы можете вернуть значение null.
<Image Source="{Binding Path=Photo, IsAsync=True, TargetNullValue={StaticResource EmptyImageDrawing}}"/>
И где-то в ресурсах, которые вам нужны
<DrawingImage x:Key="EmptyImageDrawing"> <DrawingImage.Drawing> <DrawingGroup> <GeometryDrawing> <GeometryDrawing.Brush> <VisualBrush AlignmentX="Center" AlignmentY="Center" Stretch="None"> <VisualBrush.Visual> <TextBlock Text="Failed to load photo" FontFamily="Calibri" FontSize="70" HorizontalAlignment="Center" VerticalAlignment="Bottom" TextAlignment="Center" TextWrapping="Wrap"/> </VisualBrush.Visual> </VisualBrush> </GeometryDrawing.Brush> <GeometryDrawing.Geometry> <RectangleGeometry Rect="0,0,1920,1080" /> </GeometryDrawing.Geometry> </GeometryDrawing> </DrawingGroup> </DrawingImage.Drawing> </DrawingImage>