<Grid.ColumnDefinitions>
<ColumnDefinition Width="131*"/>
<ColumnDefinition Width="132*"/>
<ColumnDefinition Width="117*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="28"/>
<RowDefinition Height="424*"/>
<RowDefinition Height="100*"/>
</Grid.RowDefinitions>
<Menu Height=" 24" Grid.Row="0" VerticalAlignment="Top" Grid.ColumnSpan="3" HorizontalAlignment="Stretch" >
<MenuItem Header=" 文件(_F)" Height="24" Width="63">
<MenuItem Header="新建(_N)">
<MenuItem Header="项目(_P)"/>
<MenuItem Header="窗口(_C)"/>
</MenuItem>
<MenuItem Header="打开(_O)">
<MenuItem Header="现有项目(_P)"/>
<MenuItem Header="现有窗口(_C)"/>
</MenuItem>
<MenuItem Header="插入照片(_I)"/>
</MenuItem>
<MenuItem Header="编辑(_E)">
<MenuItem Header="撤销(_U)" Command="ApplicationCommands.Undo"/>
<MenuItem Header="重做(_R)" Command="ApplicationCommands.Redo"/>
<Separator />
<MenuItem Header="截切(_T)" Command="ApplicationCommands.Cut"/>
<MenuItem Header="复制(_C)" Command="ApplicationCommands.Copy"/>
<MenuItem Header="粘贴(_P)" Command="ApplicationCommands.Paste"/>
</MenuItem>
<MenuItem Header="分析(_N">
<MenuItem Header="数值分析(_C)"/>
</MenuItem>
<MenuItem Header="帮助(_H)" >
<MenuItem Header="发送反馈(_F)"/>
<MenuItem Header="版本信息(_P)"/>
</MenuItem>
</Menu>
<ToolBarTray VerticalAlignment="Top" HorizontalAlignment="Stretch" Grid.Row="1" Grid.ColumnSpan="3">
<ToolBar Band="1" VerticalAlignment="Top" Height="28">
<Button>
<Image Source="/sources/1158503.png" Height="16" VerticalAlignment="Top" />
</Button>
<Button>
<Image Source="/sources/1158508.png" Height="16" VerticalAlignment="Top" />
</Button>
<Separator />
<Button>
<Image Source="/sources/floppy13.png" Height="20" VerticalAlignment="Top"/>
</Button>
<Button>
<Image Source="/sources/floppy15.png" Height="20" VerticalAlignment="Top"/>
</Button>
<Button >
<StackPanel Orientation="Horizontal" >
<Image Source="/sources/1186321.png" Height="18" VerticalAlignment="Top" />
<TextBlock Text="计算"/>
</StackPanel>
</Button>
<Separator />
<Button Height="28" x:Name="btnCapture" Content="拍照" Click="btnCapture_Click"/>
<Button Height="28" x:Name="btnanew" Content="重拍" Click="btnanew_Click"/>
</ToolBar>
</ToolBarTray>
<Viewbox Grid.Row=" 2" Grid.Column=" 0" Grid.ColumnSpan="2">
<WPFMediaKit:VideoCaptureElement Name="vce"/>
<!--预览画面-->
</Viewbox>
<TabControl Grid.Row=" 3" Grid.Column=" 0" Grid.ColumnSpan="2">
<TabItem Header="输出">
<StatusBar >
<TextBlock Text="计算结果为" VerticalAlignment="Top" />
</StatusBar>
</TabItem>
</TabControl>
<TabControl Grid.Row=" 2" Grid.Column="2">
<TabItem Header="设置">
<StackPanel >
<ComboBox Name="cb" SelectionChanged="cb_SelectionChanged" HorizontalAlignment="Stretch" Height=" 20" VerticalAlignment="Top" />
<!--选摄像头-->
<Viewbox >
<StackPanel Orientation="Horizontal" >
<TextBlock Text="曝光度:"/>
<Slider Maximum=" 100" Minimum=" 0" HorizontalAlignment="Stretch" Width=" 159" Height="20" Value=" 50" SmallChange=" 1"
TickFrequency=" 1" IsSnapToTickEnabled="True" IsSelectionRangeEnabled="True" TickPlacement="BottomRight"
Delay="10"/>
</StackPanel>
</Viewbox>
</StackPanel>
</TabItem>
</TabControl>
<TabControl Grid.Row=" 3" Grid.Column="2">
<TabItem Header=" 属性">
</TabItem>
</TabControl>
</Grid>
public MainWindow()
{
InitializeComponent();
}
private void cb_SelectionChanged(object sender, SelectionChangedEventArgs e) //选择摄像头
{
vce.VideoCaptureSource = (string)cb.SelectedItem;
}
private void btnCapture_Click(object sender, RoutedEventArgs e) //拍照
{
//captureElement. 怎么抓取高清的原始图像
RenderTargetBitmap bmp = new RenderTargetBitmap( //RenderTargetBitmap将Visual对象转化到位图中
(int)vce.ActualWidth,
(int)vce.ActualHeight,
95, 95, PixelFormats.Default);
//vce.Stretch = Stretch.Fill;
//vce.Measure(vce.RenderSize);
//vce.Arrange(new Rect(vce.RenderSize));
bmp.Render(vce); //呈现visual对象
BitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
string now = DateTime.Now.Year + "" + DateTime.Now.Month + "" + DateTime.Now.Day + "" +
DateTime.Now.Hour + "" + DateTime.Now.Minute + "" + DateTime.Now.Second;
string filename = "G:/trains C#/desktop\\" + now + "pic.jpg";
FileStream fsstream = new FileStream(filename, FileMode.Create);
encoder.Save(fsstream);
fsstream.Close();
/* using (MemoryStream ms = new MemoryStream())
{
encoder.Save(ms);
byte[] captureData = ms.ToArray();
File.WriteAllBytes("G:/trains C#/desktop/1.jpg", captureData);
}*///拍摄一张招牌
vce.Pause(); //在当前位置暂停媒体。
}
private void Window_Loaded(object sender, RoutedEventArgs e) //获取摄像头
{
cb.ItemsSource = MultimediaUtil.VideoInputNames;
if (MultimediaUtil.VideoInputNames.Length > 0)
{
cb.SelectedIndex = 0;//默认选择第0个摄像头
}
else
{
MessageBox.Show("没有检测到任何摄像头");
}
}
/// <summary>
/// 重拍
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnanew_Click(object sender, RoutedEventArgs e) //重拍
{
vce.Play();
}
}