Я генерирую растровые изображения в коде и хочу отобразить его в графическом интерфейсе. Но <ImageBrush>
не показывает их как BitmapSource/ImageSource
. Так же, как невидимое изображение в 3D-части.
На <Image>
(не на 3D-части) он отображается как хотел.
Я также попытался создать DiffuseMaterial
и ImageBrush
в коде и связать их непосредственно в <h:RectangleVisual3D>
как Material
.
И попытался использовать <VisualBrush>
вместо <ImageBrush>
с <Image>
как дочерний в XAML.
Следующий код воспроизводит проблему для моего дела:
MainWindow.xaml
<Window x:Class="WPF3DTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF3DTest"
xmlns:h="http://helix-toolkit.org/wpf"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<h:HelixViewport3D Grid.Row="0">
<h:DefaultLights />
<h:RectangleVisual3D Length="100" Width="100">
<h:RectangleVisual3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<ImageBrush Opacity="1" ImageSource="{Binding Image}" />
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</h:RectangleVisual3D.Material>
</h:RectangleVisual3D>
</h:HelixViewport3D>
<Image Grid.Row="1" Source="{Binding Image}" />
</Grid>
</Window>
MainWindow.xaml.cs
namespace WPF3DTest
{
public partial class MainWindow : Window
{
public ImageSource Image { get; set; }
public MainWindow()
{
InitializeComponent();
DataContext = this;
Image = new BitmapImage(new Uri("C:\\TypenschildDirectory\\Graphic\\laufrichtung2.png"));
Image.Freeze();
}
}
}
new BitmapImage(new Uri(...))
- это тест в моем случае. Но для моей цели он генерирует растровые изображения с использованием Imaging.CreateBitmapSourceFromHBitmap(...)
.