- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 PictureBox
上绘制图像来 self 用 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
之前被处理掉了。
最佳答案
您可以简单地使用 WPF Image 控件代替 WindowsFormsHost 中的 PictureBox:
<StackPanel Orientation="Horizontal">
<Image x:Name="image" Height="440" Width="690" HorizontalAlignment="Left"/>
...
</StackPanel>
您现在可以使用 this answer 中所示的代码从 Bitmap 对象创建一个 BitmapImage。或在 this answer ,通过额外调用 Freeze
使其可以在 UI 线程中访问:
Bitmap bitmap = eventArgs.Frame; // your NewFrameEventArgs
BitmapImage bitmapImage = new BitmapImage();
using (var stream = new MemoryStream())
{
bitmap.Save(stream, ImageFormat.Bmp);
stream.Seek(0, SeekOrigin.Begin);
bitmapImage.BeginInit();
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.StreamSource = stream;
bitmapImage.EndInit();
}
bitmapImage.Freeze();
最后,您将通过调用 Dispatcher 来更新 UI 线程中的 Image 控件:
image.Dispatcher.Invoke((Action)(() => image.Source = bitmapImage));
关于wpf - 在 UserControl WPF 内的 PictureBox 上绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18127519/
这个问题在这里已经有了答案: Transparent control over PictureBox (8 个答案) 关闭 5 个月前。 我希望 pbGrade 位于 pbItemtype 之上(p
如何将图片框内的图片移动到另一个图片框? 我想用它来移动棋子。我有一个为每个地方拍摄的图片框,所以我有 64 个图片框。 最佳答案 您可以只分配 Image在一个图片框中显示到另一个图片框。如果您随后
大家好,我正在开发跳棋游戏。我有这种宣布获胜者的方法,我希望是否有办法使用循环来做到这一点。目前它工作得很好 :),但我不得不对其进行硬编码而不是使用逻辑。 public void checkWinn
我正在编写一个可以播放幻灯片(以及其他内容)的程序。幻灯片由 backgroundWorker 控制,并设置为 while(true) 循环,因此它将不断播放图像。我的问题是我不确定如何处理旧图像以免
当我在运行时向表单添加图片框时,图片框的行为完全符合我的要求。但是当我将它添加到面板时,图片框会扩展以适合图像。 代码如下: private PictureBox globalPicBox = (Pi
我有一个 PictureBox可以有多种不同的大小(取决于屏幕分辨率、窗口状态等)。我想要适合我的 image到 PictureBox当 image 中的任何一个尺寸(宽度或高度)低于 Picture
我有一个 PictureBox,我在其中使用下面的代码来移动我的对象。我需要在表单中添加一些按钮,但是当我启动程序时,箭头键在按钮之间导航,而不是我的输入按键。我试过很多Form.Load() 上的
我不确定为什么,但每当我处理碰撞时,似乎控件的顶部和左侧属性一切正常,但右侧和底部属性却不太顺利。我不确定是不是因为它们是只读属性,但请有人帮忙。 代码如下 Playground (面板)类
最近想试试AForge.NET因为我发现它非常简单,所以我决定使用 Video.FFMPEG 命名空间来制作一些简单的视频播放,这样我就可以将每一帧直接放在图片框上。仅此一项效果很好,但我想在不重要之
我在主窗体上有两个图片框,一个是来自安装在机器人顶部的网络摄像头的视频流,另一个是一些用户反馈,它不时更新,并带有它认为可以看到的图表(命名 map )。两张图片都可以由任何线程更新。如何安全地更新这
我正在使用 C# 开发一个工具,用于捕获屏幕的一部分并将其放入 PicBox 中,我已经能够获取屏幕截图,但我在某一点上遇到了麻烦。我拍摄的镜头是从屏幕的开头拍摄的,我想给出镜头应该开始的坐标(X,Y
如何将图片设置为 PictureBox在代码中? 下面的代码给出了错误: Cannot implicitly convert Bitmap to String. private void pt
我必须在 C# 中制作一个窗口窗体,其中两个 PictureBox 重叠。 TopPictureBox 包含一个透明的 png 图片。默认情况下,可以通过单击 TopPictureBox 中图像的任何
我正在编写一个简单的游戏 - 贪吃蛇。我想要背景和我的蛇。我认为最好的方法是使用两个 pictureBox(一个有背景,第二个 - 透明,上面有蛇)。 这是个好办法?以及如何将几个小图像(蛇的片段)放
我想在 Winform 应用程序中显示一些图形,它将是股票的图表绘制工具。我认为(但我不确定...)我必须使用 PictureBox,并使用 System.Drawing.Graphics 类的绘图原
我正在为 Windows Mobile (Compact Framework 2.0) 开发一个应用程序。它有一个带 PictureBox 的 WinForms。 我想移动PictureBox的图片,
首先,我要感谢您抽出宝贵时间 :) 所以这是我的问题.. 我正在尝试制作一个小游戏,在其中生成 PictureBox 并将其从右向左发送,然后我的 PictureBox 播放器会尽量避免它们跳跃。所以
我有 pictureBox1, pictureBox2, picturebox3, .... 在 C# 中,有没有办法可以循环更改第一个 picturebox 的背景颜色,然后等待,然后更改 pict
我发现 I. 方法比 II. 方法慢。我的应用程序进行实时图像处理。我知道 C# 对于这个目的来说并不理想,但我可以分离性能关键的东西并在 C++ 中制作它。我想知道为什么在 C# 中没有任何计算的简
我需要在 C# 中绘制费马螺线。我做到了,但我希望我的绘图填充在 PictureBox 中,无论实际尺寸有多大。 public void DrawSpiral(double delta, doub
我是一名优秀的程序员,十分优秀!