add flycapture

This commit is contained in:
Tang1705
2020-01-27 18:56:50 +08:00
parent 1b7d21abf5
commit 0c4ac1d8bb
1716 changed files with 451009 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

View File

@@ -0,0 +1,238 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<FC2Version>2.12.3.2</FC2Version>
<FC2InformationalVersion>2.12.3.201801090091</FC2InformationalVersion>
</PropertyGroup>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FlyCapture2SimpleGUI_CSharp</RootNamespace>
<ApplicationIcon>FlyCap2.ico</ApplicationIcon>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>2.0</OldToolsVersion>
<UpgradeBackupLocation />
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
</PropertyGroup>
<PropertyGroup>
<AssemblyName Condition="'$(Configuration)' == 'Release'">FlyCapture2SimpleGUI_CSharp</AssemblyName>
<AssemblyName Condition="'$(Configuration)' == 'Debug'">FlyCapture2SimpleGUI_CSharpd</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>true</UseVSHostingProcess>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<Choose>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Release|AnyCPU' And Exists('..\..\bin') And !Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Release|x86' And Exists('..\..\bin')) ">
<PropertyGroup>
<anycpuX86>TRUE</anycpuX86>
</PropertyGroup>
<ItemGroup>
<Reference Include="FlyCapture2Managed, Version=$(FC2Version), Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin\FlyCapture2Managed_v100.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FlyCap2CameraControl, Version=$(FC2Version), Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin\FlyCap2CameraControl_v100.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Debug|AnyCPU' And Exists('..\..\bin') And !Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Debug|x86' And Exists('..\..\bin')) ">
<PropertyGroup>
<anycpuX86>TRUE</anycpuX86>
</PropertyGroup>
<ItemGroup>
<Reference Include="FlyCapture2Managed, Version=$(FC2Version), Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin\FlyCapture2Managedd_v100.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FlyCap2CameraControl, Version=$(FC2Version), Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin\FlyCap2CameraControld_v100.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Release|AnyCPU' And Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Release|x64' And Exists('..\..\bin64')) ">
<PropertyGroup>
<anycpuX86>FALSE</anycpuX86>
</PropertyGroup>
<ItemGroup>
<Reference Include="FlyCapture2Managed, Version=$(FC2Version), Culture=neutral, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin64\FlyCapture2Managed_v100.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FlyCap2CameraControl, Version=$(FC2Version), Culture=neutral, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin64\FlyCap2CameraControl_v100.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Debug|AnyCPU' And Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Debug|x64' And Exists('..\..\bin64')) ">
<PropertyGroup>
<anycpuX86>FALSE</anycpuX86>
</PropertyGroup>
<ItemGroup>
<Reference Include="FlyCapture2Managed, Version=$(FC2Version), Culture=neutral, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin64\FlyCapture2Managedd_v100.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FlyCap2CameraControl, Version=$(FC2Version), Culture=neutral, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin64\FlyCap2CameraControld_v100.dll</HintPath>
</Reference>
</ItemGroup>
</When>
</Choose>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<SubType>Designer</SubType>
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="app.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="FlyCap2.ico" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>
IF $(Platform)==x86 (
GOTO x86
) ELSE IF $(Platform)==x64 (
GOTO x64
) ELSE IF $(Platform)==AnyCPU (
IF $(anycpuX86)== TRUE (
GOTO x86
) ELSE (
GOTO x64
)
)
GOTO end
:x86
copy "$(ProjectDir)..\..\bin\libiomp5md.dll" "$(TargetDir)"
copy "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\bin\$(TargetName)$(TargetExt)"
IF $(ConfigurationName)==Debug (
copy "$(ProjectDir)..\..\bin\FlyCapture2d_v100.dll" "$(TargetDir)"
) ELSE (
copy "$(ProjectDir)..\..\bin\FlyCapture2_v100.dll" "$(TargetDir)"
)
GOTO end
:x64
copy "$(ProjectDir)..\..\bin64\libiomp5md.dll" "$(TargetDir)"
copy "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\bin64\$(TargetName)$(TargetExt)"
IF $(ConfigurationName)==Debug (
copy "$(ProjectDir)..\..\bin64\FlyCapture2d_v100.dll" "$(TargetDir)"
) ELSE (
copy "$(ProjectDir)..\..\bin64\FlyCapture2_v100.dll" "$(TargetDir)"
)
GOTO end
:end
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,32 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlyCapture2SimpleGUI_CSharp_2010", "FlyCapture2SimpleGUI_CSharp_2010.csproj", "{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Debug|x64.ActiveCfg = Debug|x64
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Debug|x64.Build.0 = Debug|x64
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Debug|x86.ActiveCfg = Debug|x86
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Debug|x86.Build.0 = Debug|x86
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Release|Any CPU.Build.0 = Release|Any CPU
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Release|x64.ActiveCfg = Release|x64
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Release|x64.Build.0 = Release|x64
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Release|x86.ActiveCfg = Release|x86
{349C8F44-6F3F-47E3-8599-C0BCA956BDCA}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,182 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{851056FF-F11D-84E5-7A04-80D0E610509C}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FlyCapture2SimpleGUI_CSharp</RootNamespace>
<AssemblyName>FlyCapture2SimpleGUI_CSharp</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<BaseIntermediateOutputPath>obj\x86\Debug\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin64\Debug\</OutputPath>
<BaseIntermediateOutputPath>obj\x64\Debug\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<BaseIntermediateOutputPath>obj\x86\Release\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>
<DefineConstants></DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<PlatformTarget>x64</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin64\Release\</OutputPath>
<BaseIntermediateOutputPath>obj\x64\Release\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>
<DefineConstants></DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>FlyCap2.ico</ApplicationIcon>
</PropertyGroup>
<Choose>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Release|AnyCPU' And Exists('..\..\bin') And !Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Release|x86' And Exists('..\..\bin')) ">
<ItemGroup>
<Reference Include="FlyCapture2Managed_v120">
<HintPath>..\..\bin\vs2013\FlyCapture2Managed_v120.dll</HintPath>
</Reference>
<Reference Include="FlyCap2CameraControl_v120">
<HintPath>..\..\bin\vs2013\FlyCap2CameraControl_v120.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Debug|AnyCPU' And Exists('..\..\bin') And !Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Debug|x86' And Exists('..\..\bin')) ">
<ItemGroup>
<Reference Include="FlyCapture2Managedd_v120">
<HintPath>..\..\bin\vs2013\FlyCapture2Managedd_v120.dll</HintPath>
</Reference>
<Reference Include="FlyCap2CameraControld_v120">
<HintPath>..\..\bin\vs2013\FlyCap2CameraControld_v120.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Release|AnyCPU' And Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Release|x64' And Exists('..\..\bin64')) ">
<ItemGroup>
<Reference Include="FlyCapture2Managed_v120">
<HintPath>..\..\bin64\vs2013\FlyCapture2Managed_v120.dll</HintPath>
</Reference>
<Reference Include="FlyCap2CameraControl_v120">
<HintPath>..\..\bin64\vs2013\FlyCap2CameraControl_v120.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Debug|AnyCPU' And Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Debug|x64' And Exists('..\..\bin64')) ">
<ItemGroup>
<Reference Include="FlyCapture2Managedd_v120">
<HintPath>..\..\bin64\vs2013\FlyCapture2Managedd_v120.dll</HintPath>
</Reference>
<Reference Include="FlyCap2CameraControld_v120">
<HintPath>..\..\bin64\vs2013\FlyCap2CameraControld_v120.dll</HintPath>
</Reference>
</ItemGroup>
</When>
</Choose>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Resource Include="FlyCap2.ico" />
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
<SubType>Dependency</SubType>
</Compile>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
<SubType>DesignerType</SubType>
</EmbeddedResource>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Resource Include="Resources\FlyCap2.ico" />
<Resource Include="Resources\control.bmp" />
<Resource Include="Resources\start.bmp" />
<Resource Include="Resources\stop.bmp" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>IF $(Platform)==x86 (
copy "$(ProjectDir)..\..\bin\vs2013\libiomp5md.dll" "$(TargetDir)"
IF $(ConfigurationName)==Debug (
copy "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\bin\vs2013\$(TargetName)d_v120$(TargetExt)"
copy "$(ProjectDir)..\..\bin\vs2013\FlyCapture2d_v120.dll" "$(TargetDir)"
) ELSE (
copy "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\bin\vs2013\$(TargetName)_v120$(TargetExt)"
copy "$(ProjectDir)..\..\bin\vs2013\FlyCapture2_v120.dll" "$(TargetDir)"
)
) ELSE IF $(Platform)==x64 (
copy "$(ProjectDir)..\..\bin64\vs2013\libiomp5md.dll" "$(TargetDir)"
IF $(ConfigurationName)==Debug (copy "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\bin64\vs2013\$(TargetName)d_v120$(TargetExt)"
copy "$(ProjectDir)..\..\bin64\vs2013\FlyCapture2d_v120.dll" "$(TargetDir)"
) ELSE (
copy "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\bin64\vs2013\$(TargetName)_v120$(TargetExt)"
copy "$(ProjectDir)..\..\bin64\vs2013\FlyCapture2_v120.dll" "$(TargetDir)"
)
)</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlyCapture2SimpleGUI_CSharp", "FlyCapture2SimpleGUI_CSharp_vs2013.csproj", "{851056FF-F11D-84E5-7A04-80D0E610509C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{851056FF-F11D-84E5-7A04-80D0E610509C}.Debug|x64.ActiveCfg = Debug|x64
{851056FF-F11D-84E5-7A04-80D0E610509C}.Debug|x64.Build.0 = Debug|x64
{851056FF-F11D-84E5-7A04-80D0E610509C}.Debug|x86.ActiveCfg = Debug|x86
{851056FF-F11D-84E5-7A04-80D0E610509C}.Debug|x86.Build.0 = Debug|x86
{851056FF-F11D-84E5-7A04-80D0E610509C}.Release|x64.ActiveCfg = Release|x64
{851056FF-F11D-84E5-7A04-80D0E610509C}.Release|x64.Build.0 = Release|x64
{851056FF-F11D-84E5-7A04-80D0E610509C}.Release|x86.ActiveCfg = Release|x86
{851056FF-F11D-84E5-7A04-80D0E610509C}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,182 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{851056FF-F11D-84E5-7A04-80D0E610509C}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FlyCapture2SimpleGUI_CSharp</RootNamespace>
<AssemblyName>FlyCapture2SimpleGUI_CSharp</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<BaseIntermediateOutputPath>obj\x86\Debug\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin64\Debug\</OutputPath>
<BaseIntermediateOutputPath>obj\x64\Debug\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<BaseIntermediateOutputPath>obj\x86\Release\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>
<DefineConstants></DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<PlatformTarget>x64</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin64\Release\</OutputPath>
<BaseIntermediateOutputPath>obj\x64\Release\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>
<DefineConstants></DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>FlyCap2.ico</ApplicationIcon>
</PropertyGroup>
<Choose>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Release|AnyCPU' And Exists('..\..\bin') And !Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Release|x86' And Exists('..\..\bin')) ">
<ItemGroup>
<Reference Include="FlyCapture2Managed_v140">
<HintPath>..\..\bin\vs2015\FlyCapture2Managed_v140.dll</HintPath>
</Reference>
<Reference Include="FlyCap2CameraControl_v140">
<HintPath>..\..\bin\vs2015\FlyCap2CameraControl_v140.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Debug|AnyCPU' And Exists('..\..\bin') And !Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Debug|x86' And Exists('..\..\bin')) ">
<ItemGroup>
<Reference Include="FlyCapture2Managedd_v140">
<HintPath>..\..\bin\vs2015\FlyCapture2Managedd_v140.dll</HintPath>
</Reference>
<Reference Include="FlyCap2CameraControld_v140">
<HintPath>..\..\bin\vs2015\FlyCap2CameraControld_v140.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Release|AnyCPU' And Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Release|x64' And Exists('..\..\bin64')) ">
<ItemGroup>
<Reference Include="FlyCapture2Managed_v140">
<HintPath>..\..\bin64\vs2015\FlyCapture2Managed_v140.dll</HintPath>
</Reference>
<Reference Include="FlyCap2CameraControl_v140">
<HintPath>..\..\bin64\vs2015\FlyCap2CameraControl_v140.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<When Condition=" ('$(Configuration)|$(Platform)' == 'Debug|AnyCPU' And Exists('..\..\bin64')) Or ('$(Configuration)|$(Platform)' == 'Debug|x64' And Exists('..\..\bin64')) ">
<ItemGroup>
<Reference Include="FlyCapture2Managedd_v140">
<HintPath>..\..\bin64\vs2015\FlyCapture2Managedd_v140.dll</HintPath>
</Reference>
<Reference Include="FlyCap2CameraControld_v140">
<HintPath>..\..\bin64\vs2015\FlyCap2CameraControld_v140.dll</HintPath>
</Reference>
</ItemGroup>
</When>
</Choose>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Resource Include="FlyCap2.ico" />
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
<SubType>Dependency</SubType>
</Compile>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
<SubType>DesignerType</SubType>
</EmbeddedResource>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Resource Include="Resources\FlyCap2.ico" />
<Resource Include="Resources\control.bmp" />
<Resource Include="Resources\start.bmp" />
<Resource Include="Resources\stop.bmp" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>IF $(Platform)==x86 (
copy "$(ProjectDir)..\..\bin\vs2015\libiomp5md.dll" "$(TargetDir)"
IF $(ConfigurationName)==Debug (
copy "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\bin\vs2015\$(TargetName)d_v140$(TargetExt)"
copy "$(ProjectDir)..\..\bin\vs2015\FlyCapture2d_v140.dll" "$(TargetDir)"
) ELSE (
copy "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\bin\vs2015\$(TargetName)_v140$(TargetExt)"
copy "$(ProjectDir)..\..\bin\vs2015\FlyCapture2_v140.dll" "$(TargetDir)"
)
) ELSE IF $(Platform)==x64 (
copy "$(ProjectDir)..\..\bin64\vs2015\libiomp5md.dll" "$(TargetDir)"
IF $(ConfigurationName)==Debug (copy "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\bin64\vs2015\$(TargetName)d_v140$(TargetExt)"
copy "$(ProjectDir)..\..\bin64\vs2015\FlyCapture2d_v140.dll" "$(TargetDir)"
) ELSE (
copy "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\bin64\vs2015\$(TargetName)_v140$(TargetExt)"
copy "$(ProjectDir)..\..\bin64\vs2015\FlyCapture2_v140.dll" "$(TargetDir)"
)
)</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2015
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlyCapture2SimpleGUI_CSharp", "FlyCapture2SimpleGUI_CSharp_vs2015.csproj", "{851056FF-F11D-84E5-7A04-80D0E610509C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{851056FF-F11D-84E5-7A04-80D0E610509C}.Debug|x64.ActiveCfg = Debug|x64
{851056FF-F11D-84E5-7A04-80D0E610509C}.Debug|x64.Build.0 = Debug|x64
{851056FF-F11D-84E5-7A04-80D0E610509C}.Debug|x86.ActiveCfg = Debug|x86
{851056FF-F11D-84E5-7A04-80D0E610509C}.Debug|x86.Build.0 = Debug|x86
{851056FF-F11D-84E5-7A04-80D0E610509C}.Release|x64.ActiveCfg = Release|x64
{851056FF-F11D-84E5-7A04-80D0E610509C}.Release|x64.Build.0 = Release|x64
{851056FF-F11D-84E5-7A04-80D0E610509C}.Release|x86.ActiveCfg = Release|x86
{851056FF-F11D-84E5-7A04-80D0E610509C}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,243 @@
namespace FlyCapture2SimpleGUI_CSharp
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.toolStripButtonStart = new System.Windows.Forms.ToolStripButton();
this.toolStripButtonStop = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripButtonCameraControl = new System.Windows.Forms.ToolStripButton();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabelImageSize = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelFrameRate = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelTimestamp = new System.Windows.Forms.ToolStripStatusLabel();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.newCameraToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.panel1 = new System.Windows.Forms.Panel();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.toolStrip1.SuspendLayout();
this.statusStrip1.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// toolStrip1
//
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripButtonStart,
this.toolStripButtonStop,
this.toolStripSeparator1,
this.toolStripButtonCameraControl});
this.toolStrip1.Location = new System.Drawing.Point(0, 24);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(632, 25);
this.toolStrip1.TabIndex = 0;
this.toolStrip1.Text = "toolStrip1";
//
// toolStripButtonStart
//
this.toolStripButtonStart.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButtonStart.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonStart.Image")));
this.toolStripButtonStart.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButtonStart.Name = "toolStripButtonStart";
this.toolStripButtonStart.Size = new System.Drawing.Size(23, 22);
this.toolStripButtonStart.Text = "Play";
this.toolStripButtonStart.Click += new System.EventHandler(this.toolStripButtonStart_Click);
//
// toolStripButtonStop
//
this.toolStripButtonStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButtonStop.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonStop.Image")));
this.toolStripButtonStop.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButtonStop.Name = "toolStripButtonStop";
this.toolStripButtonStop.Size = new System.Drawing.Size(23, 22);
this.toolStripButtonStop.Text = "Stop";
this.toolStripButtonStop.Click += new System.EventHandler(this.toolStripButtonStop_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
//
// toolStripButtonCameraControl
//
this.toolStripButtonCameraControl.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButtonCameraControl.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonCameraControl.Image")));
this.toolStripButtonCameraControl.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButtonCameraControl.Name = "toolStripButtonCameraControl";
this.toolStripButtonCameraControl.Size = new System.Drawing.Size(23, 22);
this.toolStripButtonCameraControl.Text = "Controls";
this.toolStripButtonCameraControl.Click += new System.EventHandler(this.toolStripButtonCameraControl_Click);
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabelImageSize,
this.toolStripStatusLabelFrameRate,
this.toolStripStatusLabelTimestamp});
this.statusStrip1.Location = new System.Drawing.Point(0, 427);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(632, 22);
this.statusStrip1.TabIndex = 1;
this.statusStrip1.Text = "statusStrip1";
//
// toolStripStatusLabelImageSize
//
this.toolStripStatusLabelImageSize.Name = "toolStripStatusLabelImageSize";
this.toolStripStatusLabelImageSize.Size = new System.Drawing.Size(24, 17);
this.toolStripStatusLabelImageSize.Text = "0x0";
//
// toolStripStatusLabelFrameRate
//
this.toolStripStatusLabelFrameRate.Name = "toolStripStatusLabelFrameRate";
this.toolStripStatusLabelFrameRate.Size = new System.Drawing.Size(42, 17);
this.toolStripStatusLabelFrameRate.Text = "0.00Hz";
//
// toolStripStatusLabelTimestamp
//
this.toolStripStatusLabelTimestamp.Name = "toolStripStatusLabelTimestamp";
this.toolStripStatusLabelTimestamp.Size = new System.Drawing.Size(108, 17);
this.toolStripStatusLabelTimestamp.Text = "Camera not started";
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(632, 24);
this.menuStrip1.TabIndex = 2;
this.menuStrip1.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newCameraToolStripMenuItem,
this.toolStripSeparator2,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "File";
//
// newCameraToolStripMenuItem
//
this.newCameraToolStripMenuItem.Name = "newCameraToolStripMenuItem";
this.newCameraToolStripMenuItem.Size = new System.Drawing.Size(140, 22);
this.newCameraToolStripMenuItem.Text = "New camera";
this.newCameraToolStripMenuItem.Click += new System.EventHandler(this.OnNewCameraClick);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(137, 6);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(140, 22);
this.exitToolStripMenuItem.Text = "Exit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
//
// panel1
//
this.panel1.AutoScroll = true;
this.panel1.AutoSize = true;
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 49);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(632, 378);
this.panel1.TabIndex = 3;
//
// pictureBox1
//
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(632, 378);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 5;
this.pictureBox1.TabStop = false;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(632, 449);
this.Controls.Add(this.panel1);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.toolStrip1);
this.Controls.Add(this.menuStrip1);
this.DoubleBuffered = true;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.MinimumSize = new System.Drawing.Size(640, 480);
this.Name = "Form1";
this.Text = "FlyCapture2SimpleGUI_CSharp";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
this.Load += new System.EventHandler(this.Form1_Load);
this.toolStrip1.ResumeLayout(false);
this.toolStrip1.PerformLayout();
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ToolStrip toolStrip1;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelTimestamp;
private System.Windows.Forms.ToolStripButton toolStripButtonStart;
private System.Windows.Forms.ToolStripButton toolStripButtonStop;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.ToolStripButton toolStripButtonCameraControl;
private System.Windows.Forms.ToolStripMenuItem newCameraToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelImageSize;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelFrameRate;
}
}

View File

@@ -0,0 +1,313 @@
//=============================================================================
// Copyright © 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================
//=============================================================================
// $Id: Form1.cs 316528 2017-02-22 00:03:53Z alin $
//=============================================================================
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
using System.Diagnostics;
using FlyCapture2Managed;
using FlyCapture2Managed.Gui;
namespace FlyCapture2SimpleGUI_CSharp
{
public partial class Form1 : Form
{
private FlyCapture2Managed.Gui.CameraControlDialog m_camCtlDlg;
private ManagedCameraBase m_camera = null;
private ManagedImage m_rawImage;
private ManagedImage m_processedImage;
private bool m_grabImages;
private AutoResetEvent m_grabThreadExited;
private BackgroundWorker m_grabThread;
public Form1()
{
InitializeComponent();
m_rawImage = new ManagedImage();
m_processedImage = new ManagedImage();
m_camCtlDlg = new CameraControlDialog();
m_grabThreadExited = new AutoResetEvent(false);
}
private void UpdateUI(object sender, ProgressChangedEventArgs e)
{
UpdateStatusBar();
pictureBox1.Image = m_processedImage.bitmap;
pictureBox1.Invalidate();
}
private void UpdateStatusBar()
{
String statusString;
statusString = String.Format(
"Image size: {0} x {1}",
m_rawImage.cols,
m_rawImage.rows);
toolStripStatusLabelImageSize.Text = statusString;
try
{
statusString = String.Format(
"Requested frame rate: {0}Hz",
m_camera.GetProperty(PropertyType.FrameRate).absValue);
}
catch (FC2Exception ex)
{
statusString = "Requested frame rate: 0.00Hz";
}
toolStripStatusLabelFrameRate.Text = statusString;
TimeStamp timestamp;
lock (this)
{
timestamp = m_rawImage.timeStamp;
}
statusString = String.Format(
"Timestamp: {0:000}.{1:0000}.{2:0000}",
timestamp.cycleSeconds,
timestamp.cycleCount,
timestamp.cycleOffset);
toolStripStatusLabelTimestamp.Text = statusString;
statusStrip1.Refresh();
}
private void Form1_Load(object sender, EventArgs e)
{
Hide();
CameraSelectionDialog camSlnDlg = new CameraSelectionDialog();
bool retVal = camSlnDlg.ShowModal();
if (retVal)
{
try
{
ManagedPGRGuid[] selectedGuids = camSlnDlg.GetSelectedCameraGuids();
if ( selectedGuids.Length == 0 )
{
Debug.WriteLine("No cameras selected!");
Close();
return;
}
ManagedPGRGuid guidToUse = selectedGuids[0];
ManagedBusManager busMgr = new ManagedBusManager();
InterfaceType ifType = busMgr.GetInterfaceTypeFromGuid(guidToUse);
if (ifType == InterfaceType.GigE)
{
m_camera = new ManagedGigECamera();
}
else
{
m_camera = new ManagedCamera();
}
// Connect to the first selected GUID
m_camera.Connect(guidToUse);
m_camCtlDlg.Connect(m_camera);
CameraInfo camInfo = m_camera.GetCameraInfo();
UpdateFormCaption(camInfo);
// Set embedded timestamp to on
EmbeddedImageInfo embeddedInfo = m_camera.GetEmbeddedImageInfo();
embeddedInfo.timestamp.onOff = true;
m_camera.SetEmbeddedImageInfo(embeddedInfo);
m_camera.StartCapture();
m_grabImages = true;
StartGrabLoop();
}
catch (FC2Exception ex)
{
Debug.WriteLine("Failed to load form successfully: " + ex.Message);
Close();
}
toolStripButtonStart.Enabled = false;
toolStripButtonStop.Enabled = true;
}
else
{
Close();
}
Show();
}
private void UpdateFormCaption(CameraInfo camInfo)
{
String captionString = String.Format(
"FlyCapture2SimpleGUI_CSharp - {0} {1} ({2})",
camInfo.vendorName,
camInfo.modelName,
camInfo.serialNumber);
this.Text = captionString;
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
toolStripButtonStop_Click(sender, e);
m_camera.Disconnect();
}
catch (FC2Exception ex)
{
// Nothing to do here
}
catch (NullReferenceException ex)
{
// Nothing to do here
}
}
private void StartGrabLoop()
{
m_grabThread = new BackgroundWorker();
m_grabThread.ProgressChanged += new ProgressChangedEventHandler(UpdateUI);
m_grabThread.DoWork += new DoWorkEventHandler(GrabLoop);
m_grabThread.WorkerReportsProgress = true;
m_grabThread.RunWorkerAsync();
}
private void GrabLoop(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
while (m_grabImages)
{
try
{
m_camera.RetrieveBuffer(m_rawImage);
}
catch (FC2Exception ex)
{
Debug.WriteLine("Error: " + ex.Message);
continue;
}
lock (this)
{
m_rawImage.Convert(PixelFormat.PixelFormatBgr, m_processedImage);
}
worker.ReportProgress(0);
}
m_grabThreadExited.Set();
}
private void toolStripButtonStart_Click(object sender, EventArgs e)
{
m_camera.StartCapture();
m_grabImages = true;
StartGrabLoop();
toolStripButtonStart.Enabled = false;
toolStripButtonStop.Enabled = true;
}
private void toolStripButtonStop_Click(object sender, EventArgs e)
{
m_grabImages = false;
try
{
m_camera.StopCapture();
}
catch (FC2Exception ex)
{
Debug.WriteLine("Failed to stop camera: " + ex.Message);
}
catch (NullReferenceException)
{
Debug.WriteLine("Camera is null");
}
toolStripButtonStart.Enabled = true;
toolStripButtonStop.Enabled = false;
}
private void toolStripButtonCameraControl_Click(object sender, EventArgs e)
{
if (m_camCtlDlg.IsVisible())
{
m_camCtlDlg.Hide();
toolStripButtonCameraControl.Checked = false;
}
else
{
m_camCtlDlg.Show();
toolStripButtonCameraControl.Checked = true;
}
}
private void OnNewCameraClick(object sender, EventArgs e)
{
if (m_grabImages == true)
{
toolStripButtonStop_Click(sender, e);
m_camCtlDlg.Hide();
m_camCtlDlg.Disconnect();
m_camera.Disconnect();
}
Form1_Load(sender, e);
}
}
}
//=============================================================================
// $Log: not supported by cvs2svn $
// Revision 1.3 2011/02/02 17:52:47 soowei
// [1] Handle grab errors in the grab loop
//
// Revision 1.2 2011/02/02 01:20:16 soowei
// [1] Add some more information to GUI
//
// Revision 1.1 2011/02/01 23:10:35 soowei
// [1] Adding FlyCapture2SimpleGUI_CSharp example
//
//=============================================================================

View File

@@ -0,0 +1,888 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="toolStripButtonStart.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAA4AAAAPCAYAAADUFP50AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEpSURBVDhPpdLvT4JAHAZw//m2aq1XqeTs76iFZZbg1Gk/
nCQCR5gpgkDkQgPd08G69SKHup5X7Mbnudv3LvPvTGwLP5+75ej4AHzpAlPH2a1g/3APqqagUORwc1uG
63nbFcQwznIZoSt1kOeyEGpVeL6fXsCgqsv4mPmIohCtdhM5LodGs07XZusLGJTkJ/Q1CcORgWAeIAy/
IIh34Ap5tB9afzGDstqFQnoghoLBUKfDshK8WMxxdc2jeHaKTvfxt4BBTe+DvCgwBgTDNwNOAsPN0Hgl
yU4Ta5T8HCNBrG4+qmmNEQSfiOh02/ctOpws6g0R776bPpzVaonnnkSv4wRVsULvc7oesMSQ6FryAMqV
EhzXTgcs8ZO75M9h2eZ2gGVsjnYAmcw3q8NCnDOGHoYAAAAASUVORK5CYII=
</value>
</data>
<data name="toolStripButtonStop.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADASURBVDhPxdDLDoIwEAVQft7E+HnGEB7lLaJGHm0pZXft
KCibElY6yd00czLTcf5X+8MOWzK1f4se6/aBxqTtarS8QcdbcGEiOwjJ7ZCQ6x/hhScEzEUYe4jSAEnG
IHthhzTphSIXbIGyIkav5Ao0680oJpS/UVGmUGuQ/sRi36AQaR4ZlBiUobwUUIOyQy66D8pnVBWoriUG
vQLpcjM6L9DtXkHrwQ6lgXQ9OoRSPQazHk0iNI7aDrdkav95Oc4TDy1Kk+Sp7f8AAAAASUVORK5CYII=
</value>
</data>
<data name="toolStripButtonCameraControl.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJKSURBVDhPfdT7T1JhGAdw/pTS/ybtp66/OC+1NWfDmUOd
NWcKgi6QizbzUs2tVeuqrcVoo5o44iKgGMVJiYwUPHA43OQS8O28r8CGgN+zZzt7d97Pe97nXETlWG1m
aHQqKKZkDWtufha//DsoTamNWqvEIRtCsVhEoxgMBswvPMCGw1IfIisRIJlKIBaPIhrjwEXDCHMs2EgI
IfYAJtManE4nXr1+AZvdXAsRhIQg8USsLrT6bgWFQoFCj5eX4PMx1ZB8Uopx2V1aY9LREsRDOjFWGdfO
qKGb1UCrm8a0RomZ+5pqZHR8BL/3/Mjn8xgcllTuaOj2ALK5LBwuO54+fwLPj21awWCQNrs0/TgDQ/3g
OE5obhDivptgfjJgdrzoEXfD7XFic9sJslCktDWSGqS9s01Awtjf/wO94T06r7Wj63oHXr55ho3Nr/jw
cRXdPTfA8RHap6Jw1CBkUiCwh8BfP5hdD7a+OeDYssLuMsNs/4JJpQxLjxbBC82O8pxwH3WQOyPD6O0T
w+124SAYwHfGDatzHevWz5hb1KGjq0140XYRS/ACxNffDhkIR8L0ydxTTdGtmSxG3JL0QjLYL/TIS5ud
SMYp1BAp59KVCxQxmvT0PJ0+QjqTxlE6JUBJCpGcily+epEieuMKRXL/cshmMxUoJUAkpyJnzslxtkWO
plYFmlom6LtThjIClMmm6SdSg5AvmOeP99p8XgGzl8XyJx8FT4YAbPgQaq2qGrFY1yq/guZWOR6+tVGA
FBk7WeRaMkckEon+A8o6vvFkPR5sAAAAAElFTkSuQmCC
</value>
</data>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>116, 17</value>
</metadata>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>226, 17</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
MwwAijQIAIA0DQCANQ0AgDUOAIE2DwCBNhAAgjYQAIE3EACCNxAAgTcRAII4EQCCOBIAgzgSAIM5EwCD
OhMAgzoUAIQ6FACDOhUAgzsVAIQ7FQCCOxYAgzsWAIQ7FgCCOxcAgzwWAIQ8FgCDPBcAhDwXAIU8FwCG
PBcAhT0XAIY9FwCGPRgAhT4YAIY/GQCHPxoAiEEcAIhCHQCLRSIAjEYjAIxHIwCMSCUAkU4sAJFOLgCR
UC4Ak1IxAJRTMgCUVDMAllY1AJlbPACZXDwAmVw9AJpePwCfZkgAn2ZJAKNsTwCkblIASG93AKZxVQBP
cXcApnJXAKdyVwCremEArXxjAEp7iABKfIgASX2LAIB+dwCwgWgAsIFpAIuBdwCwgmkAs4ZuAIWLiACF
jIgAhYyJALiNdwCFjYsAuI53ALiOeACFjosAuI95ALyPeADAkHcAu5J9ALuSfgC9lYEAvZaBAL2WggC+
loMAvpeDAL6YhAC/mYYAwJuIAMCciADBnIgAwJyJAMGciQDBnYoAwp6LAMOfjQDGpJIAx6WUAMemlQDI
p5YAyamZAMqqmgDLq5wAy6ybAMyungDMrp8Aza+gAM2woQDOsaIA0rmrANO6rADVvbAAEL36AA+9/ADW
v7IA17+zAA++/AAPvv0A18C0ANnCtgDaxLkA2sW5AAfH/wAGyf8A3Mi9AAjK/wDdyb4A3cm/AODPxQDi
0cgA4tLJAOPSygDk1MwA5dbOAObY0ADm2NEA59rTAOja0wDo29UA6dzWAIfc+wCH3f0Ah97+AOzh2wDs
4twAh+n/AIfq/wCG6/8A8OnkAIjs/wD07usA9vLvAPj18wD49vQA+vj3APv5+AD8+vkA/fv6AP37+wD9
/PsA/fz8AP79/AD+/f0A/v79AP7+/gD//v4A///+AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAK6urq6urq6urq6urq2stV5tx7/Gx8fHx8fHx8fHx8fHrq6urq6urq6u
rq6trLFrFQ9+x7/Ax4lxx8C4Wk5Mkseurq6urq6urq6urayyZQYzNAN6x7vHikjHx7AhjWxGx66urq6u
rq6urq2ssmYJNSwtNgV8x8eoQ2p0tkmjx6rCrq6urq6urq6trLJmCTMtKiotNgV4x7dEWG+8UYPHtLmu
rq6urq6urayyZgkzLSotLSotNgV4x0t4qatfUK9Cgq6urq6urq2ssmYJMy0qNCYoLiotNgKBhEVJVaJP
Sk2grq6urq6trLJmCTMtKTYePzsgNCotNgV/x8PExMfHx8eurq6urayyZgkzLSk5HjimmBomNCotNgN5
x7/CxMfFxK6urq2ssmYJMy0pOR0+o8fHlh8lNCotNAV8x7/Fx8fHrq6trLJmCTMtKTkcP6THv7/HlyEk
NiotNgV8x7/Gx8eurayyZgkzLSo0E0Clx77Cwr7HmSMcNCotNgV8x7/Gx62ssmYJMy0qLiBHp8e/wsbF
wr/HnEEmLSotNgV8x7/GrLFkCTMtKio2D1nHvsDHcIDHvcLCUBY0KiotNgV5x7+zaAY1LSoqKio2B2LH
x3IDD4XHulMKNyoqKiotNgN+x2EUMC0qKioqKio8AGNyAD05A4JXAjwqKioqKiotNA9nVhgvLCoqKioq
LSYMhY4cKiI6nnMFKioqKioqKi00D2mbXQ0yLCoqKiosJ4bHx5MXO6HHx3YeLioqKiotNgN+x5CaWxEy
LCoqOQtgx7y/x4+fx729x1ISNioqLTYFese/kZCaXBEyLCosKiuMx7/Cx8bBwMd9Hy4qKi02BXzHv8aV
lJCaXBEyLCouJRCLx7/BwcDHewUqLSotNgV8x7/Gx5WVlJCaXBEyLCoxKg+Ix72/x3cFNi0qLTYFfMe/
xsfHlZWVlJCaXBEyLCoxKgyHx8d1BDYtKi02BXzHv8bHx8eVlZWVlJCaXBEyLCouLAiKfAE2LSotNgV8
x7/Gx8fHx5WVlZWVlJCaXBEyLCouKhkZLiwqLTYFfMe/xsfHx8fHlZWVlZWVlJCaXBEyLCotMTEqKi02
BXzHv8bHx8fHx8eVlZWVlZWVlJCaXBEyLCoqKiotNgV8x7/Gx8fHx8fHx5WVlZWVlZWVlJCaXBEyLCoq
LTYFfMe/xsfHx8fHx8fHlZWVlZWVlZWVlJCaXBEyLC02BXzHv8bHx8fHx8fHx8eVlZWVlZWVlZWVlJCa
Ww0wMwN6x7/Gx8fHx8fHx8fHx5WVlZWVlZWVlZWVlJCaXRsOfse/xsfHx8fHx8fHx8fHlZWVlZWVlZWV
lZWVkZCdVG7Hv8bHx8fHx8fHx8fHx8cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAB4KQAAeisCAHosAwB6LAQAgy0CAIMuAwB8LwYAgy8EAHwvBwCMMAIAhDAFAHwwCAB9
MAgAjDADAH0wCQCMMQMAfTEJAIwxBACCMggAfjIKAIQyCQCJMwgAfjMMAIo0CAB/NAwAgDUOAIE2DwCB
NhAAgTcRAII4EQCCOBIAgjkTAIE5FACCOhQAgzoUAII7FgCDOxYAhDsWAIM8FgCEPBYAgjwXAIQ8FwCC
PBgAhT0XAIM9GACEPRgAhT0YAIU+GACDPhoAhT4aAIY/GgCMRyQAj04sAJJRLwCVVzYAlVc3AJpeQACb
YEIASG93AE5xdwCtfGMASnuIAEl8iABKfIgASH2LAEl9iwCAfncAioF3ALKEbACFi4gAt4x3AIWMiACF
jIkAuI13ALiOeACFjosAvI94AMGQeAC6kXwAvZaCAL+ZhQDAmocAwZyJAMGdigDCnosAwp6MAMOgjQDE
oY4AxKGPAMajkQDHppQAyKiXAMmpmADKqpoAy6ubAMusnADMrp4A0LSmANK4qgDVvbAA1r2wANa+sQDW
vrIAEL36AA++/AAPvv0A2MC0ANjCtgAHx/8AB8j/AAbK/wAHyv8A4M7EAOHOxQDh0McA4tDHAOLRyADm
2NAA59jRAOnc1QCH3PoAh9z7AIfd/QCH3v4A6+DZAOzh3ACH6v8A8ejjAIbs/wCI7P8A8uvnAPz6+QD9
/PsA/v39AP///gD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAe3t7e3p4gUJMh4Rzh3VXfXt7e3p5fksUDFKHRnBYWnZ7e3p4fkUFKSkAXV88
Wl1re3p4fkgKIR4dIhNEanFeZHp5fkgHIBNlYQgiEFuHhYd4fkcHJh9ih4dgGycAUYeDgEsEMQhYh3d8
h08GMgFUh0MSJCUaNGYzNWMzHCUnDEk7FSMmGTh0NjlyNxknJwxKbkAJMAhTh3+Ch04IMgFUh2dsPw8q
DlmHh1AILwJSh4RoZ20+ESgDXFYBLgNSh4SGaWhnbT4RKBYYKwNSh4SGh2lpaGdtPQ0sLQFSh4SGh4dp
aWloZ2xBFwtVh4SGh4eHaWlpaWhnbzpNh4SGh4eHhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value>
</data>
</root>

View File

@@ -0,0 +1,39 @@
//=============================================================================
// Copyright © 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================
//=============================================================================
// $Id: Program.cs 316528 2017-02-22 00:03:53Z alin $
//=============================================================================
using System;
using System.Windows.Forms;
namespace FlyCapture2SimpleGUI_CSharp
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

View File

@@ -0,0 +1,34 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("FlyCapture2SimpleGUI_CSharp")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("FLIR Integrated Imaging Solutions, Inc.")]
[assembly: AssemblyProduct("FlyCapture2SimpleGUI_CSharp")]
[assembly: AssemblyCopyright("© FLIR Integrated Imaging Solutions, Inc. All rights reserved.")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("7ff90994-3eca-4a17-aa05-08e64a1ac41a")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("2.12.3.2")]
[assembly: AssemblyFileVersion("2.12.3.2")]
[assembly: AssemblyInformationalVersion("2.12.3.201801090091")]

View File

@@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace FlyCapture2SimpleGUI_CSharp.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FlyCapture2SimpleGUI_CSharp.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace FlyCapture2SimpleGUI_CSharp.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0"/>
</startup>
</configuration>

View File

@@ -0,0 +1 @@
b934838738a9bebdace16157427320f9d3b2be2a