WPF: сплошной цвет ImageSource - PullRequest
       7

WPF: сплошной цвет ImageSource

2 голосов
/ 27 января 2010

В моем приложении я отображаю изображения, полученные из внешних библиотек DLL, привязывая элемент управления Source of Image к ImageSource.

Это работает хорошо, но иногда я не получаю никаких данных из моей DLL, и я хотел бы просто показать черное изображение. В таком случае, как мне создать ImageSource, который содержит только сплошной цвет?

Ответы [ 2 ]

0 голосов
/ 27 января 2010

Альтернативный метод - дать цвет фона, а не показывать изображение.

// XAML
<Grid Background="Black">
  <Image x:Name="imgDisplay"/>
</Grid>

// C#
imgDisplay.Source = null;
// -- OR --
imgDisplay.Visibility = Visibility.Collapsed;
0 голосов
/ 27 января 2010

например, у вас есть изображение где-то в шаблоне, которое привязывается к некоторому свойству Photo В случае сбоя вы можете вернуть нулевое значение.

<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>
...