PictureBox
で挿入したカメラから に画像をペイントしようとしていWindowsFormsHost
ます。コードは次のように単純です。
<Window x:Class="videoTEst.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="583" Width="1132"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms">
<StackPanel Background="LightBlue" Height="513" Width="1077">
<StackPanel HorizontalAlignment="Center" Width="450" Orientation="Horizontal">
<Button Name="ButtonOpen" Content="Load" Click="ButtonOpen_OnClick" />
<Button Name="ButtonLoadImage" Content="Load image" Click="ButtonLoadImage_OnClick" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<WindowsFormsHost Name="WinFormsHost" Height="440" Width="690" HorizontalAlignment="Left">
<wf:PictureBox x:Name="PictureBoxvideo" SizeMode="Normal" Paint="PictureBoxvideo_Paint"></wf:PictureBox>
</WindowsFormsHost>
<ListBox Name="ListBoxLog" />
</StackPanel>
</StackPanel>
そして、私はこのようにカメラからペイントします:
private void asyncVideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Image temp = PictureBoxvideo.Image;
Bitmap bitmap = eventArgs.Frame;
PictureBoxvideo.Image = new Bitmap(bitmap);
if (temp != null) temp.Dispose();
bitmap.Dispose();
}
このコードは完全に機能します。
しかし、<Window>
タグを<UserControl>
(自分で埋め込みたいのでUserControl
)に変更すると、ペイントされません!!
なぜ上に絵を描いていないのUserControl
ですか?
なぜ私はImage
WPFから使用していないのですか?
Image
のスレッド化の使用法は非常に紛らわしく、 にペイントしようとするとImage
、Bitmap
は以前に破棄されていました。