Commit def34741 几米阳光

增加测试程序

1 个父辈 e91fec9c
......@@ -23,7 +23,7 @@ namespace CodeTest
{
Directory.CreateDirectory(targetFilePath);
}
for (int i = 1; i <= count; i++)
for (int i = 100000; i <= 100000+count; i++)
{
string name = "pn;" + i.ToString().PadLeft(6, '0') + ";1000";
Bitmap map = ZXingCode(name, 200, BarcodeFormat.QR_CODE);
......
......@@ -36,6 +36,22 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="AForge, Version=2.2.5.0, Culture=neutral, PublicKeyToken=c1db6ff4eaa06aeb, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\AForge.NET\AForge.dll</HintPath>
</Reference>
<Reference Include="AForge.Controls, Version=2.2.5.0, Culture=neutral, PublicKeyToken=a8ac264d1dc6b9d9, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\AForge.NET\AForge.Controls.dll</HintPath>
</Reference>
<Reference Include="AForge.Video, Version=2.2.5.0, Culture=neutral, PublicKeyToken=cbfb6e07d173c401, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\AForge.NET\AForge.Video.dll</HintPath>
</Reference>
<Reference Include="AForge.Video.DirectShow, Version=2.2.5.0, Culture=neutral, PublicKeyToken=61ea4348d43881b7, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\AForge.NET\AForge.Video.DirectShow.dll</HintPath>
</Reference>
<Reference Include="Basler.Pylon, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e389355f398382ab, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Basler.Pylon.dll</HintPath>
......@@ -52,6 +68,7 @@
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Windows" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
......@@ -77,6 +94,7 @@
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="VideoPlayer.cs" />
<EmbeddedResource Include="FrmTest.resx">
<DependentUpon>FrmTest.cs</DependentUpon>
</EmbeddedResource>
......
......@@ -28,20 +28,112 @@
/// </summary>
private void InitializeComponent()
{
this.videoSourcePlayer = new AForge.Controls.VideoSourcePlayer();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.btnGetImage = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// videoSourcePlayer
//
this.videoSourcePlayer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.videoSourcePlayer.Location = new System.Drawing.Point(12, 12);
this.videoSourcePlayer.Name = "videoSourcePlayer";
this.videoSourcePlayer.Size = new System.Drawing.Size(464, 426);
this.videoSourcePlayer.TabIndex = 0;
this.videoSourcePlayer.Text = "videoSourcePlayer";
this.videoSourcePlayer.VideoSource = null;
//
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.button1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button1.Location = new System.Drawing.Point(500, 116);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(92, 41);
this.button1.TabIndex = 1;
this.button1.Text = "开始";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.button2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button2.Location = new System.Drawing.Point(619, 116);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(92, 41);
this.button2.TabIndex = 2;
this.button2.Text = "停止";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// comboBox1
//
this.comboBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Location = new System.Drawing.Point(498, 63);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(228, 29);
this.comboBox1.TabIndex = 3;
//
// label1
//
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(495, 27);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(91, 14);
this.label1.TabIndex = 4;
this.label1.Text = "请选择相机:";
//
// btnGetImage
//
this.btnGetImage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnGetImage.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnGetImage.Location = new System.Drawing.Point(500, 189);
this.btnGetImage.Name = "btnGetImage";
this.btnGetImage.Size = new System.Drawing.Size(92, 41);
this.btnGetImage.TabIndex = 5;
this.btnGetImage.Text = "抓图";
this.btnGetImage.UseVisualStyleBackColor = true;
this.btnGetImage.Click += new System.EventHandler(this.btnGetImage_Click);
//
// FrmTest
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(750, 450);
this.Controls.Add(this.btnGetImage);
this.Controls.Add(this.label1);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.videoSourcePlayer);
this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Name = "FrmTest";
this.Text = "FrmTest";
this.Load += new System.EventHandler(this.FrmTest_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private AForge.Controls.VideoSourcePlayer videoSourcePlayer;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button btnGetImage;
}
}
\ No newline at end of file
using System;
using AForge.Video;
using AForge.Video.DirectShow;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
......@@ -16,14 +20,75 @@ namespace CodeTest
InitializeComponent();
}
private FilterInfoCollection videoDevices;
private void FrmTest_Load(object sender, EventArgs e)
{
var zipHelper = new CompressHelper();
zipHelper.CompressSingle(@"D:\Data Matrix ECC 200.dcm");
List<string> strList = new List<string>() { @"D:\Data Matrix ECC 200.dcm", @"D:\ilmergeTest.txt", @"D:\QR Code.dcm" };
//var zipHelper = new CompressHelper();
//zipHelper.CompressSingle(@"D:\Data Matrix ECC 200.dcm");
//List<string> strList = new List<string>() { @"D:\Data Matrix ECC 200.dcm", @"D:\ilmergeTest.txt", @"D:\QR Code.dcm" };
//zipHelper.CompressMulti(strList.ToArray(), @"D:\test.gz");
//zipHelper.DeCompressMulti(@"D:\test.gz", @"D:\web\");
zipHelper.CompressMulti(strList.ToArray(), @"D:\test.gz");
zipHelper.DeCompressMulti(@"D:\test.gz", @"D:\web\");
comboBox1.Items.Clear();
this.videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
foreach (FilterInfo v in videoDevices)
{
comboBox1.Items.Add(v.Name);
}
if (comboBox1.Items.Count > 0)
{
comboBox1.SelectedIndex = 0;
}
}
private void button1_Click(object sender, EventArgs e)
{
int index = comboBox1.SelectedIndex;
if (this.videoDevices.Count > index)
{
VideoCaptureDevice source = new VideoCaptureDevice(this.videoDevices[index].MonikerString);
this.videoSourcePlayer.SignalToStop();
this.videoSourcePlayer.WaitForStop();
this.videoSourcePlayer.VideoSource = source;
this.videoSourcePlayer.Start();
}
comboBox1.Enabled = false;
}
private void button2_Click(object sender, EventArgs e)
{
videoSourcePlayer.Stop();
comboBox1.Enabled = true;
}
private int flag = 0;
private void btnGetImage_Click(object sender, EventArgs e)
{
if (videoSourcePlayer.IsRunning)
{
flag = 0;
videoSourcePlayer.NewFrame += video_NewFrame;
//string path = Application.StartupPath + @"\ImagePath\Image.bmp";
Bitmap bit = (Bitmap)(videoSourcePlayer.GetCurrentVideoFrame()).Clone() ;
//bit.Save(path, ImageFormat.Bmp);
//MessageBox.Show("成功保存图片至:" + path);
}
}
private void video_NewFrame(object sender, ref Bitmap image)
{
Bitmap bitmap = (Bitmap)image.Clone();
if (flag == 0)
{
string dir = Application.StartupPath + @"/ImagePath/ ";
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
string img = dir + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
bitmap.Save(img);
flag = 1;
}
}
}
}
......@@ -18,12 +18,12 @@ namespace CodeTest
[STAThread]
static void Main()
{
//CodeCreater.CreateCode(30);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
HDCodeLearnHelper.LoadConfig(ConfigAppSettings.GetValue(Setting_Init.CameraName), ConfigAppSettings.GetValue(Setting_Init.CodeType));
Application.Run(new FrmCodeDecode());
//Application.Run(new FrmTest());
//CodeCreater.CreateCode(100);
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
//HDCodeLearnHelper.LoadConfig(ConfigAppSettings.GetValue(Setting_Init.CameraName), ConfigAppSettings.GetValue(Setting_Init.CodeType));
//Application.Run(new FrmCodeDecode());
Application.Run(new FrmTest());
}
}
......
using AForge.Video.DirectShow;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CodeTest
{
public class VideoPlayerM
{
public static VideoPlayerM instance =new VideoPlayerM();
public AForge.Controls.VideoSourcePlayer videoSourcePlayer = null;
private VideoPlayerM()
{
}
public int CameraIndex = -1;
private FilterInfoCollection videoDevices;
public void Init(string name)
{
int i = -1;
this.videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
foreach (FilterInfo v in videoDevices)
{
i++;
if (v.Name.Contains(name))
{
CameraIndex = i;
break;
}
} }
public void Start()
{
if (CameraIndex >= 0)
{
VideoCaptureDevice source = new VideoCaptureDevice(this.videoDevices[CameraIndex].MonikerString);
this.videoSourcePlayer.SignalToStop();
this.videoSourcePlayer.WaitForStop();
this.videoSourcePlayer.VideoSource = source;
this.videoSourcePlayer.Start();
}
}
public void Stop()
{
if (videoSourcePlayer.IsRunning)
{
videoSourcePlayer.Stop();
}
}
}
}
<?xml version="1.0"?>
<doc>
<assembly>
<name>AForge.Controls</name>
</assembly>
<members>
<member name="T:AForge.Controls.PictureBox">
<summary>
Picture box control for displaying an image.
</summary>
<remarks><para>This control is inherited from System.Windows.Forms.PictureBox and is
aimed to resolve one of its issues - inability to display images with high color depth,
like 16 bpp grayscale, 48 bpp and 64 bpp color images. .NET framework does not handle
16 bpp grayscale images at all, throwing exception when user tries to display them. Color
images with 48 bpp and 64 bpp are "kind of" supported, but only maximum of 13 bits for each
color plane are allowed. Therefore this control is created, which allows to display as
16 bpp grayscale images, as 48 bpp and 64 bpp color images.</para>
<para><note>To display high color depth images, the control does internal conversion of them
to lower color depth images - 8 bpp grayscale, 24 bpp and 32 bpp color images respectively. In
the case source image already has low color depth, it is displayed without any conversions.
</note></para>
</remarks>
</member>
<member name="P:AForge.Controls.PictureBox.Image">
<summary>
Gets or sets the image that the PictureBox displays.
</summary>
<remarks><para>The property is used to set image to be displayed or to get currently
displayed image.</para>
<para><note>In the case if source image has high color depth, like 16 bpp grayscale image,
48 bpp or 64 bpp color image, it is converted to lower color depth before displaying -
to 8 bpp grayscale, 24 bpp or 32 bpp color image respectively.</note></para>
<para><note>During color conversion the original source image is kept unmodified, but internal
converted copy is created. The property always returns original source image.</note></para>
</remarks>
</member>
<member name="T:AForge.Controls.ColorSlider">
<summary>
Color slider control.
</summary>
<remarks><para>The control represent a color slider, which allows selecting
one or two values in the [0, 255] range. The application of this control
includes mostly areas of image processing and computer vision, where it is required
to select color threshold or ranges for different type of color filtering.</para>
<para>Depending on the control's <see cref="P:AForge.Controls.ColorSlider.Type"/>, it has different look and may suite
different tasks. See documentation to <see cref="T:AForge.Controls.ColorSlider.ColorSliderType"/> for information
about available type and possible control's looks.</para>
</remarks>
</member>
<member name="M:AForge.Controls.ColorSlider.#ctor">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.ColorSlider"/> class.
</summary>
</member>
<member name="M:AForge.Controls.ColorSlider.Dispose(System.Boolean)">
<summary>
Dispose the object.
</summary>
<param name="disposing">Specifies if disposing was invoked by user's code.</param>
</member>
<member name="E:AForge.Controls.ColorSlider.ValuesChanged">
<summary>
An event, to notify about changes of <see cref="P:AForge.Controls.ColorSlider.Min"/> or <see cref="P:AForge.Controls.ColorSlider.Max"/> properties.
</summary>
<remarks><para>The event is fired after changes of <see cref="P:AForge.Controls.ColorSlider.Min"/> or <see cref="P:AForge.Controls.ColorSlider.Max"/> property,
which is caused by user dragging the corresponding control’s arrow (slider).</para>
</remarks>
</member>
<member name="P:AForge.Controls.ColorSlider.StartColor">
<summary>
Start color for gradient filling.
</summary>
<remarks>See documentation to <see cref="T:AForge.Controls.ColorSlider.ColorSliderType"/> enumeration for information about
the usage of this property.</remarks>
</member>
<member name="P:AForge.Controls.ColorSlider.EndColor">
<summary>
End color for gradient filling.
</summary>
<remarks>See documentation to <see cref="T:AForge.Controls.ColorSlider.ColorSliderType"/> enumeration for information about
the usage of this property.</remarks>
</member>
<member name="P:AForge.Controls.ColorSlider.FillColor">
<summary>
Color to fill control's background in filtered zones.
</summary>
<remarks>See documentation to <see cref="T:AForge.Controls.ColorSlider.ColorSliderType"/> enumeration for information about
the usage of this property.</remarks>
</member>
<member name="P:AForge.Controls.ColorSlider.Type">
<summary>
Specifies control's type.
</summary>
<remarks>See documentation to <see cref="T:AForge.Controls.ColorSlider.ColorSliderType"/> enumeration for information about
the usage of this property.</remarks>
</member>
<member name="P:AForge.Controls.ColorSlider.Min">
<summary>
Minimum selected value, [0, 255].
</summary>
</member>
<member name="P:AForge.Controls.ColorSlider.Max">
<summary>
Maximum selected value, [0, 255].
</summary>
</member>
<member name="P:AForge.Controls.ColorSlider.DoubleArrow">
<summary>
Single or Double arrow slider control.
</summary>
<remarks><para>The property specifies if the slider has one or two selection arrows (sliders).</para>
<para>The single arrow allows only to specify one value, which is set by <see cref="P:AForge.Controls.ColorSlider.Min"/>
property. The single arrow slider is useful for applications, where it is required to select
color threshold, for example.</para>
<para>The double arrow allows to specify two values, which are set by <see cref="P:AForge.Controls.ColorSlider.Min"/>
and <see cref="P:AForge.Controls.ColorSlider.Max"/> properties. The double arrow slider is useful for applications, where it is
required to select filtering color range, for example.</para>
</remarks>
</member>
<member name="T:AForge.Controls.ColorSlider.ColorSliderType">
<summary>
Enumeration of color slider types.
</summary>
<remarks>
<para>The <see cref="F:AForge.Controls.ColorSlider.ColorSliderType.Gradient"/> slider's type supposes the control's
background filled with gradient startting from <see cref="P:AForge.Controls.ColorSlider.StartColor"/> color and ending
with <see cref="P:AForge.Controls.ColorSlider.EndColor"/> color. The <see cref="P:AForge.Controls.ColorSlider.FillColor"/> color does not have
impact on control's look.</para>
<para>This type allows as one-arrow, as two-arrows control.</para>
<para><b>Sample control's look:</b></para>
<img src="img/controls/slider_gradient.png" width="258" height="17"/>
<para>The <see cref="F:AForge.Controls.ColorSlider.ColorSliderType.InnerGradient"/> slider's type supposes the control's
background filled with gradient startting from <see cref="P:AForge.Controls.ColorSlider.StartColor"/> color and ending
with <see cref="P:AForge.Controls.ColorSlider.EndColor"/> color. In addition the areas, which are outside of
[<see cref="P:AForge.Controls.ColorSlider.Min"/>, <see cref="P:AForge.Controls.ColorSlider.Max"/>] range, are filled with <see cref="P:AForge.Controls.ColorSlider.FillColor"/> color.</para>
<para>This type allows only two-arrows control.</para>
<para><b>Sample control's look:</b></para>
<img src="img/controls/slider_inner_gradient.png" width="258" height="17"/>
<para>The <see cref="F:AForge.Controls.ColorSlider.ColorSliderType.OuterGradient"/> slider's type supposes the
control's background filled with gradient startting from <see cref="P:AForge.Controls.ColorSlider.StartColor"/> color
and ending with <see cref="P:AForge.Controls.ColorSlider.EndColor"/> color. In addition the area, which is inside of
[<see cref="P:AForge.Controls.ColorSlider.Min"/>, <see cref="P:AForge.Controls.ColorSlider.Max"/>] range, is filled with <see cref="P:AForge.Controls.ColorSlider.FillColor"/> color.</para>
<para>This type allows only two-arrows control.</para>
<para><b>Sample control's look:</b></para>
<img src="img/controls/slider_outer_gradient.png" width="258" height="17"/>
<para>The <see cref="F:AForge.Controls.ColorSlider.ColorSliderType.Threshold"/> slider's type supposes filling areas
outside of [<see cref="P:AForge.Controls.ColorSlider.Min"/>, <see cref="P:AForge.Controls.ColorSlider.Max"/>] range with <see cref="P:AForge.Controls.ColorSlider.StartColor"/> and
inside the range with <see cref="P:AForge.Controls.ColorSlider.EndColor"/>. The <see cref="P:AForge.Controls.ColorSlider.FillColor"/> color does not
have impact on control's look.</para>
<para>This type allows as one-arrow, as two-arrows control.</para>
<para><b>Sample control's look:</b></para>
<img src="img/controls/slider_threshold.png" width="258" height="17"/>
</remarks>
</member>
<member name="F:AForge.Controls.ColorSlider.ColorSliderType.Gradient">
<summary>
Gradient color slider type.
</summary>
</member>
<member name="F:AForge.Controls.ColorSlider.ColorSliderType.InnerGradient">
<summary>
Inner gradient color slider type.
</summary>
</member>
<member name="F:AForge.Controls.ColorSlider.ColorSliderType.OuterGradient">
<summary>
Outer gradient color slider type.
</summary>
</member>
<member name="F:AForge.Controls.ColorSlider.ColorSliderType.Threshold">
<summary>
Threshold color slider type.
</summary>
</member>
<member name="T:AForge.Controls.VideoSourcePlayer">
<summary>
Video source player control.
</summary>
<remarks><para>The control is aimed to play video sources, which implement
<see cref="T:AForge.Video.IVideoSource"/> interface. To start playing a video
the <see cref="P:AForge.Controls.VideoSourcePlayer.VideoSource"/> property should be initialized first and then
<see cref="M:AForge.Controls.VideoSourcePlayer.Start"/> method should be called. In the case if user needs to
perform some sort of image processing with video frames before they are displayed,
the <see cref="E:AForge.Controls.VideoSourcePlayer.NewFrame"/> event may be used.</para>
<para>Sample usage:</para>
<code>
// set new frame event handler if we need processing of new frames
playerControl.NewFrame += new VideoSourcePlayer.NewFrameHandler( this.playerControl_NewFrame );
// create video source
IVideoSource videoSource = new ...
// start playing it
playerControl.VideoSource = videoSource;
playerControl.Start( );
...
// new frame event handler
private void playerControl_NewFrame( object sender, ref Bitmap image )
{
// process new frame somehow ...
// Note: it may be even changed, so the control will display the result
// of image processing done here
}
</code>
</remarks>
</member>
<member name="M:AForge.Controls.VideoSourcePlayer.#ctor">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.VideoSourcePlayer"/> class.
</summary>
</member>
<member name="M:AForge.Controls.VideoSourcePlayer.Start">
<summary>
Start video source and displaying its frames.
</summary>
</member>
<member name="M:AForge.Controls.VideoSourcePlayer.Stop">
<summary>
Stop video source.
</summary>
<remarks><para>The method stops video source by calling its <see cref="M:AForge.Video.IVideoSource.Stop"/>
method, which abourts internal video source's thread. Use <see cref="M:AForge.Controls.VideoSourcePlayer.SignalToStop"/> and
<see cref="M:AForge.Controls.VideoSourcePlayer.WaitForStop"/> for more polite video source stopping, which gives a chance for
video source to perform proper shut down and clean up.
</para></remarks>
</member>
<member name="M:AForge.Controls.VideoSourcePlayer.SignalToStop">
<summary>
Signal video source to stop.
</summary>
<remarks><para>Use <see cref="M:AForge.Controls.VideoSourcePlayer.WaitForStop"/> method to wait until video source
stops.</para></remarks>
</member>
<member name="M:AForge.Controls.VideoSourcePlayer.WaitForStop">
<summary>
Wait for video source has stopped.
</summary>
<remarks><para>Waits for video source stopping after it was signaled to stop using
<see cref="M:AForge.Controls.VideoSourcePlayer.SignalToStop"/> method. If <see cref="M:AForge.Controls.VideoSourcePlayer.SignalToStop"/> was not called, then
it will be called automatically.</para></remarks>
</member>
<member name="M:AForge.Controls.VideoSourcePlayer.GetCurrentVideoFrame">
<summary>
Get clone of current video frame displayed by the control.
</summary>
<returns>Returns copy of the video frame, which is currently displayed
by the control - the last video frame received from video source. If the
control did not receive any video frames yet, then the method returns
<see langword="null"/>.</returns>
</member>
<member name="F:AForge.Controls.VideoSourcePlayer.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:AForge.Controls.VideoSourcePlayer.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:AForge.Controls.VideoSourcePlayer.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="P:AForge.Controls.VideoSourcePlayer.AutoSizeControl">
<summary>
Auto size control or not.
</summary>
<remarks><para>The property specifies if the control should be autosized or not.
If the property is set to <see langword="true"/>, then the control will change its size according to
video size and control will change its position automatically to be in the center
of parent's control.</para>
<para><note>Setting the property to <see langword="true"/> has no effect if
<see cref="P:System.Windows.Forms.Control.Dock"/> property is set to <see cref="F:System.Windows.Forms.DockStyle.Fill"/>.</note></para>
</remarks>
</member>
<member name="P:AForge.Controls.VideoSourcePlayer.BorderColor">
<summary>
Control's border color.
</summary>
<remarks><para>Specifies color of the border drawn around video frame.</para></remarks>
</member>
<member name="P:AForge.Controls.VideoSourcePlayer.VideoSource">
<summary>
Video source to play.
</summary>
<remarks><para>The property sets the video source to play. After setting the property the
<see cref="M:AForge.Controls.VideoSourcePlayer.Start"/> method should be used to start playing the video source.</para>
<para><note>Trying to change video source while currently set video source is still playing
will generate an exception. Use <see cref="P:AForge.Controls.VideoSourcePlayer.IsRunning"/> property to check if current video
source is still playing or <see cref="M:AForge.Controls.VideoSourcePlayer.Stop"/> or <see cref="M:AForge.Controls.VideoSourcePlayer.SignalToStop"/> and <see cref="M:AForge.Controls.VideoSourcePlayer.WaitForStop"/>
methods to stop current video source.</note></para>
</remarks>
<exception cref="T:System.Exception">Video source can not be changed while current video source is still running.</exception>
</member>
<member name="P:AForge.Controls.VideoSourcePlayer.IsRunning">
<summary>
State of the current video source.
</summary>
<remarks><para>Current state of the current video source object - running or not.</para></remarks>
</member>
<member name="E:AForge.Controls.VideoSourcePlayer.NewFrame">
<summary>
New frame event.
</summary>
<remarks><para>The event is fired on each new frame received from video source. The
event is fired right after receiving and before displaying, what gives user a chance to
perform some image processing on the new frame and/or update it.</para>
<para><note>Users should not keep references of the passed to the event handler image.
If user needs to keep the image, it should be cloned, since the original image will be disposed
by the control when it is required.</note></para>
</remarks>
</member>
<member name="E:AForge.Controls.VideoSourcePlayer.PlayingFinished">
<summary>
Playing finished event.
</summary>
<remarks><para>The event is fired when/if video playing finishes. The reason of video
stopping is provided as an argument to the event handler.</para></remarks>
</member>
<member name="T:AForge.Controls.VideoSourcePlayer.NewFrameHandler">
<summary>
Delegate to notify about new frame.
</summary>
<param name="sender">Event sender.</param>
<param name="image">New frame.</param>
</member>
<member name="T:AForge.Controls.SliderControl">
<summary>
Slider control.
</summary>
<remarks>
<para>The control represents a slider, which can be dragged in the [-1, 1] range.
Default position of the slider is set 0, which corresponds to center of the control.<br />
<img src="img/controls/slider_control.png" width="227" height="56" />
</para>
</remarks>
</member>
<member name="M:AForge.Controls.SliderControl.#ctor">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.SliderControl"/> class.
</summary>
</member>
<member name="F:AForge.Controls.SliderControl.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:AForge.Controls.SliderControl.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:AForge.Controls.SliderControl.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="P:AForge.Controls.SliderControl.ResetPositionOnMouseRelease">
<summary>
Determines behaviour of manipulator, when mouse button is released.
</summary>
<remarks>
<para>The property controls behaviour of manipulator on releasing mouse button. If
the property is set to <see langword="true"/>, then position of manipulator is reset
to 0, when mouse button is released. Otherwise manipulator stays on the place,
where it was left.</para>
<para>Default value is set to <see langword="true"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.SliderControl.BorderColor">
<summary>
Color used for drawing borders.
</summary>
<remarks>
<para>Default value is set to <see cref="P:System.Drawing.Color.Black"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.SliderControl.PositiveAreaBrush">
<summary>
Background color used for filling area corresponding to positive values.
</summary>
<remarks>
<para>Default value is set to <see cref="P:System.Drawing.Color.White"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.SliderControl.NegativeAreaBrush">
<summary>
Background color used for filling area corresponding to negative values.
</summary>
<remarks>
<para>Default value is set to <see cref="P:System.Drawing.Color.LightGray"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.SliderControl.ManipulatorColor">
<summary>
Color used for filling manipulator.
</summary>
<remarks>
<para>Default value is set to <see cref="P:System.Drawing.Color.LightSeaGreen"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.SliderControl.IsHorizontal">
<summary>
Defines if control has horizontal or vertical look.
</summary>
<remarks>
<para>Default value is set to <see langword="true"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.SliderControl.ManipulatorPosition">
<summary>
Current manipulator's position, [-1, 1].
</summary>
<remarks><para>The property equals to current manipulator's position.</para>
</remarks>
</member>
<member name="E:AForge.Controls.SliderControl.PositionChanged">
<summary>
Event used for notification about manipulator's position changes.
</summary>
</member>
<member name="T:AForge.Controls.SliderControl.PositionChangedHandler">
<summary>
Delegate used for notification about manipulator's position changes.
</summary>
<param name="sender">Event sender - object sending the event.</param>
<param name="position">Current position of manipulator.</param>
</member>
<member name="T:AForge.Controls.Joystick">
<summary>
The class provides simple API for enumerating available joysticks and checking their
current status.
</summary>
<remarks><para>The class provides simple access to joysticks (game controllers) through using
Win32 API, which allows to enumerate available devices and query their status (state of all buttons,
axes, etc).</para>
<para>Sample usage:</para>
<code>
// enumerate available devices
List&lt;Joystick.DeviceInfo&gt; devices = Joystick.GetAvailableDevices( );
foreach ( Joystick.DeviceInfo di in devices )
{
System.Diagnostics.Debug.WriteLine(
string.Format( "{0} : {1} ({2} axes, {3} buttons)",
di.ID, di.Name, di.Axes, di.Buttons ) );
}
// create new joystick and initialize it
Joystick joystick = new Joystick( 0 );
// get its current status
Joystick.Status status = joystick.GetCurrentStatus( );
// check if 1st button is pressed
if ( status.IsButtonPressed( Joystick.Buttons.Button1 ) )
{
// 1st button is pressed
}
</code>
</remarks>
</member>
<member name="M:AForge.Controls.Joystick.GetAvailableDevices">
<summary>
Get list of available joysticks connected to the system.
</summary>
<returns>Returns list containing information about available joysticks connected to
the system.</returns>
</member>
<member name="M:AForge.Controls.Joystick.#ctor">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.Joystick"/> class.
</summary>
<remarks><para>This constructor does not make initialization of any joystick
device, so <see cref="M:AForge.Controls.Joystick.Init(System.Int32)"/> method should be used before querying joystick
status or properties.</para></remarks>
</member>
<member name="M:AForge.Controls.Joystick.#ctor(System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.Joystick"/> class.
</summary>
<param name="id">Joystick ID to initialize, [0, 15].</param>
<remarks><para>This constructor initializes joystick with specified ID using
<see cref="M:AForge.Controls.Joystick.Init(System.Int32)"/> method, so the object becomes ready for querying joystick's
status.</para></remarks>
</member>
<member name="M:AForge.Controls.Joystick.Init(System.Int32)">
<summary>
Initialize joystick with the specified ID.
</summary>
<param name="id">Joystick's ID to initialize, [0, 15].</param>
<remarks><para></para></remarks>
<exception cref="T:System.ArgumentException">Invalid joystick ID was specified. It must be in [0, 15] range.</exception>
<exception cref="T:AForge.NotConnectedException">The requested joystick is not connected to the system.</exception>
</member>
<member name="M:AForge.Controls.Joystick.GetCurrentStatus">
<summary>
Get joystick's status.
</summary>
<returns>Returns current status of initialized joystick, which provides information
about current state of all axes, buttons and point of view.</returns>
<remarks><para><note>Before using this method the joystick object needs to be initialized
using <see cref="M:AForge.Controls.Joystick.Init(System.Int32)"/> method or <see cref="M:AForge.Controls.Joystick.#ctor(System.Int32)"/> constructor.</note></para></remarks>
<exception cref="T:AForge.NotConnectedException">The requested joystick is not connected to the system.</exception>
<exception cref="T:System.ApplicationException">Joystick was not initialized.</exception>
</member>
<member name="P:AForge.Controls.Joystick.Info">
<summary>
Information about initialized joystick.
</summary>
<remarks><para>The property keeps information about joystick, which was
initialized using <see cref="M:AForge.Controls.Joystick.Init(System.Int32)"/> method. If no joystick was initialized,
then accessing this property will generate <see cref="T:System.ApplicationException"/>
exception.</para></remarks>
<exception cref="T:System.ApplicationException">Joystick was not initialized.</exception>
</member>
<member name="T:AForge.Controls.Joystick.DeviceInfo">
<summary>
Information about joystick connected to the system.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.DeviceInfo.ID">
<summary>
Joystick ID, [0..15].
</summary>
</member>
<member name="P:AForge.Controls.Joystick.DeviceInfo.Name">
<summary>
Joystick name.
</summary>
</member>
<member name="P:AForge.Controls.Joystick.DeviceInfo.Axes">
<summary>
Number of joystick axes.
</summary>
</member>
<member name="P:AForge.Controls.Joystick.DeviceInfo.Buttons">
<summary>
Number of joystick buttons.
</summary>
</member>
<member name="T:AForge.Controls.Joystick.Status">
<summary>
Class describing current joystick's status.
</summary>
<remarks><para><note>All joystick axes' positions are measured in [-1, 1] range, where
0 corresponds to center position - axis is not deflected (directed) to any side.</note></para></remarks>
</member>
<member name="M:AForge.Controls.Joystick.Status.IsButtonPressed(AForge.Controls.Joystick.Buttons)">
<summary>
Check if certain button (or combination of buttons) is pressed.
</summary>
<param name="button">Button to check state of.</param>
<returns>Returns <see langword="true"/> if the specified button is pressed or
<see langword="false"/> otherwise.</returns>
</member>
<member name="P:AForge.Controls.Joystick.Status.XAxis">
<summary>
Position of X axis, [-1, 1].
</summary>
</member>
<member name="P:AForge.Controls.Joystick.Status.YAxis">
<summary>
Position of Y axis, [-1, 1].
</summary>
</member>
<member name="P:AForge.Controls.Joystick.Status.ZAxis">
<summary>
Position of Z axis, [-1, 1].
</summary>
</member>
<member name="P:AForge.Controls.Joystick.Status.RAxis">
<summary>
Position of R axis - 4th joystick's axes, [-1, 1].
</summary>
</member>
<member name="P:AForge.Controls.Joystick.Status.UAxis">
<summary>
Position of U axis - 5th joystick's axes, [-1, 1].
</summary>
</member>
<member name="P:AForge.Controls.Joystick.Status.VAxis">
<summary>
Position of V axis - 6th joystick's axes, [-1, 1].
</summary>
</member>
<member name="P:AForge.Controls.Joystick.Status.Buttons">
<summary>
Joystick buttons' state.
</summary>
</member>
<member name="P:AForge.Controls.Joystick.Status.PointOfView">
<summary>
Current point of view state, [0, 359].
</summary>
</member>
<member name="T:AForge.Controls.Joystick.Buttons">
<summary>
Flags enumeration of joystick buttons.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button1">
<summary>
1st button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button2">
<summary>
2nd button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button3">
<summary>
3rd button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button4">
<summary>
4th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button5">
<summary>
5th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button6">
<summary>
6th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button7">
<summary>
7th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button8">
<summary>
8th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button9">
<summary>
9th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button10">
<summary>
10th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button11">
<summary>
11th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button12">
<summary>
12th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button13">
<summary>
13th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button14">
<summary>
14th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button15">
<summary>
15th button.
</summary>
</member>
<member name="F:AForge.Controls.Joystick.Buttons.Button16">
<summary>
16th button.
</summary>
</member>
<member name="T:AForge.Controls.HuePicker">
<summary>
Hue picker control.
</summary>
<remarks><para>The control allows selecting hue value (or range) from HSL color space. Hue values
are integer values in the [0, 359] range.</para>
<para>If control's type is set to <see cref="F:AForge.Controls.HuePicker.HuePickerType.Value"/>, then it allows selecting single
hue value and looks like this:<br/>
<img src="img/controls/hue_picker1.png" width="220" height="220"/>
</para>
<para>If control's type is set to <see cref="F:AForge.Controls.HuePicker.HuePickerType.Range"/>, then it allows selecting range
of hue values and looks like this:<br/>
<img src="img/controls/hue_picker2.png" width="220" height="220"/>
</para>
</remarks>
</member>
<member name="M:AForge.Controls.HuePicker.#ctor">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.HuePicker"/> class.
</summary>
</member>
<member name="M:AForge.Controls.HuePicker.Dispose(System.Boolean)">
<summary>
Dispose the object.
</summary>
<param name="disposing">Specifies if disposing was invoked by user's code.</param>
</member>
<member name="M:AForge.Controls.HuePicker.OnPaint(System.Windows.Forms.PaintEventArgs)">
<summary>
Paint the controls.
</summary>
<param name="pe">Paint event arguments.</param>
</member>
<member name="E:AForge.Controls.HuePicker.ValuesChanged">
<summary>
An event, to notify about changes of <see cref="P:AForge.Controls.HuePicker.Min"/> or <see cref="P:AForge.Controls.HuePicker.Max"/> properties.
</summary>
<remarks><para>The event is fired after changes of its <see cref="P:AForge.Controls.HuePicker.Value"/>, <see cref="P:AForge.Controls.HuePicker.Min"/> or
<see cref="P:AForge.Controls.HuePicker.Max"/> properties, which is caused by user dragging the corresponding hue picker's bullets.</para>
</remarks>
</member>
<member name="P:AForge.Controls.HuePicker.Value">
<summary>
Selected value of the hue picker control in <see cref="F:AForge.Controls.HuePicker.HuePickerType.Value"/> mode.
</summary>
</member>
<member name="P:AForge.Controls.HuePicker.Min">
<summary>
Minimum selected value of the hue picker control in <see cref="F:AForge.Controls.HuePicker.HuePickerType.Range"/> mode.
</summary>
</member>
<member name="P:AForge.Controls.HuePicker.Max">
<summary>
Maximum selected value of the hue picker control in <see cref="F:AForge.Controls.HuePicker.HuePickerType.Range"/> mode.
</summary>
</member>
<member name="P:AForge.Controls.HuePicker.Type">
<summary>
Current type of the hue picker control.
</summary>
<remarks><para>See <see cref="T:AForge.Controls.HuePicker.HuePickerType"/> enumeration for description of the available types.</para></remarks>
</member>
<member name="T:AForge.Controls.HuePicker.HuePickerType">
<summary>
Enumeration of hue picker types.
</summary>
<remarks>
<para>The <see cref="F:AForge.Controls.HuePicker.HuePickerType.Value"/> type provides single bullet to drag, which allows
selecting single hue value. The value is accessible through <see cref="F:AForge.Controls.HuePicker.HuePickerType.Value"/> property.</para>
<para>The <see cref="F:AForge.Controls.HuePicker.HuePickerType.Range"/> type provides two bullets to drag, which correspond
to minimum and maximum values of the hue range. These values are accessible through
<see cref="P:AForge.Controls.HuePicker.Min"/> and <see cref="P:AForge.Controls.HuePicker.Max"/> properties.</para>
</remarks>
</member>
<member name="F:AForge.Controls.HuePicker.HuePickerType.Value">
<summary>
Selecting single hue value.
</summary>
</member>
<member name="F:AForge.Controls.HuePicker.HuePickerType.Range">
<summary>
Selecting hue values range.
</summary>
</member>
<member name="T:AForge.Controls.ManipulatorControl">
<summary>
Manipulator control.
</summary>
<remarks>
<para>The manipulator control can be used to mimic behaviour of analogue joystick using
regular mouse. By dragging manipulator away from control's centre, it fires <see cref="E:AForge.Controls.ManipulatorControl.PositionChanged"/>
event notifying about its X/Y coordinates (or about R/Theta coordinates in Polar coordinates system).
</para>
<para>For example, in robotics applications the control can be used to drive robots. If user drags manipulator
further from centre (increasing distance between centre and manipulator), then higher power (speed) should be
set for robot's motors. But dragging it in different directions away from centre should result in changing
robot's direction: straight forward, backward, turning right or left, etc.<br/>
<img src="img/controls/manipulator_round.png" width="215" height="215"/>
</para>
<para>Another possible application of the control is to control position of some device, etc.
For example, the control could be used with pan-tilt camera - by dragging control away from centre,
the camera may rotate in one of the directions.<br/>
<img src="img/controls/manipulator_square.png" width="215" height="215"/>
</para>
</remarks>
</member>
<member name="M:AForge.Controls.ManipulatorControl.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:AForge.Controls.ManipulatorControl.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="M:AForge.Controls.ManipulatorControl.#ctor">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.ManipulatorControl"/> class.
</summary>
</member>
<member name="P:AForge.Controls.ManipulatorControl.IsSquareLook">
<summary>
Determines if the control has square or round look.
</summary>
<remarks>
<para>The control has a square look if the property is set to <see langword="true"/>,
otherwise it has round look.</para>
<para>Default value is set to <see langword="false"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.ManipulatorControl.DrawHorizontalAxis">
<summary>
Determines if horizontal axis should be drawn or not.
</summary>
<remarks>
<para>Default value is set to <see langword="true"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.ManipulatorControl.DrawVerticalAxis">
<summary>
Determines if vertical axis should be drawn or not.
</summary>
<remarks>
<para>Default value is set to <see langword="false"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.ManipulatorControl.ResetPositionOnMouseRelease">
<summary>
Determines behaviour of manipulator, when mouse button is released.
</summary>
<remarks>
<para>The property controls behaviour of manipulator on releasing mouse button. If
the property is set to <see langword="true"/>, then position of manipulator is reset
to (0, 0), when mouse button is released. Otherwise manipulator stays on the place,
where it was left.</para>
<para>Default value is set to <see langword="true"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.ManipulatorControl.BorderColor">
<summary>
Color used for drawing borders and axis's.
</summary>
<remarks>
<para>Default value is set to <see cref="P:System.Drawing.Color.Black"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.ManipulatorControl.TopLeftBackgroundColor">
<summary>
Background color used for filling top left quarter of the control.
</summary>
<remarks>
<para>Default value is set to <see cref="P:System.Drawing.Color.White"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.ManipulatorControl.TopRightBackgroundColor">
<summary>
Background color used for filling top right quarter of the control.
</summary>
<remarks>
<para>Default value is set to <see cref="P:System.Drawing.Color.White"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.ManipulatorControl.BottomLeftBackgroundColor">
<summary>
Background color used for filling bottom left quarter of the control.
</summary>
<remarks>
<para>Default value is set to <see cref="P:System.Drawing.Color.LightGray"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.ManipulatorControl.BottomRightBackgroundColor">
<summary>
Background color used for filling bottom right quarter of the control.
</summary>
<remarks>
<para>Default value is set to <see cref="P:System.Drawing.Color.LightGray"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.ManipulatorControl.ManipulatorColor">
<summary>
Color used for filling manipulator.
</summary>
<remarks>
<para>Default value is set to <see cref="P:System.Drawing.Color.LightSeaGreen"/>.</para>
</remarks>
</member>
<member name="P:AForge.Controls.ManipulatorControl.ManipulatorPosition">
<summary>
Current manipulator's position.
</summary>
<remarks><para>The property equals to current manipulator's position. Both X and Y values
are in the [-1, 1] range and represented in
<a href="http://en.wikipedia.org/wiki/Cartesian_coordinate_system">Cartesian coordinate system</a>.</para>
</remarks>
</member>
<member name="E:AForge.Controls.ManipulatorControl.PositionChanged">
<summary>
Event used for notification about manipulator's position changes.
</summary>
</member>
<member name="T:AForge.Controls.ManipulatorControl.PositionEventArgs">
<summary>
Class, which summarizes arguments of manipulator's position change event.
</summary>
<remarks><para>Properties of this class allow to get:
<list type="bullet">
<item>X/Y coordinates of manipulator in
<a href="http://en.wikipedia.org/wiki/Cartesian_coordinate_system">Cartesian coordinate system</a>,
where X axis is directed from center of the control to the right and Y axis is directed from
center to the top. Both coordinates are measured in [-1, 1] range.</item>
<item>Theta and R coordinates of manipulator in
<a href="http://en.wikipedia.org/wiki/Polar_coordinate_system">Polar coordinate system</a>.</item>
</list>
</para></remarks>
</member>
<member name="M:AForge.Controls.ManipulatorControl.PositionEventArgs.#ctor(System.Single,System.Single)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.ManipulatorControl.PositionEventArgs"/> class.
</summary>
<param name="x">X coordinate of manipulator, [-1, 1].</param>
<param name="y">Y coordinate of manipulator, [-1, 1].</param>
</member>
<member name="P:AForge.Controls.ManipulatorControl.PositionEventArgs.X">
<summary>
X coordinate of manipulator, [-1, 1].
</summary>
</member>
<member name="P:AForge.Controls.ManipulatorControl.PositionEventArgs.Y">
<summary>
Y coordinate of manipulator, [-1, 1].
</summary>
</member>
<member name="P:AForge.Controls.ManipulatorControl.PositionEventArgs.Theta">
<summary>
Theta coordinate of manipulator in Polar coordinate system, [0, 359].
</summary>
</member>
<member name="P:AForge.Controls.ManipulatorControl.PositionEventArgs.R">
<summary>
R (radius) coordinate of manipulator in Polar coordinate system, [0, 1].
</summary>
</member>
<member name="T:AForge.Controls.ManipulatorControl.PositionChangedHandler">
<summary>
Delegate used for notification about manipulator's position changes.
</summary>
<param name="sender">Event sender - object sending the event.</param>
<param name="eventArgs">Event arguments - current manipulator's position.</param>
</member>
<member name="T:AForge.Controls.HistogramEventArgs">
<summary>
Arguments of histogram events.
</summary>
</member>
<member name="M:AForge.Controls.HistogramEventArgs.#ctor(System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.HistogramEventArgs"/> class.
</summary>
<param name="pos">Histogram's index under mouse pointer.</param>
</member>
<member name="M:AForge.Controls.HistogramEventArgs.#ctor(System.Int32,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.HistogramEventArgs"/> class.
</summary>
<param name="min">Min histogram's index in selection.</param>
<param name="max">Max histogram's index in selection.</param>
</member>
<member name="P:AForge.Controls.HistogramEventArgs.Min">
<summary>
Min histogram's index in selection.
</summary>
</member>
<member name="P:AForge.Controls.HistogramEventArgs.Max">
<summary>
Max histogram's index in selection.
</summary>
</member>
<member name="P:AForge.Controls.HistogramEventArgs.Position">
<summary>
Histogram's index under mouse pointer.
</summary>
</member>
<member name="T:AForge.Controls.HistogramEventHandler">
<summary>
Delegate for histogram events handlers.
</summary>
<param name="sender">Sender object.</param>
<param name="e">Event arguments.</param>
</member>
<member name="T:AForge.Controls.Histogram">
<summary>
Histogram control.
</summary>
<remarks><para>The control displays histograms represented with integer arrays,
where each array's element keeps occurrence number of the corresponding element.
</para>
<para>Sample usage:</para>
<code>
// create array with histogram values
int[] histogramValues = new int[] { 3, 8, 53, 57, 79, 69, ... };
// set values to histogram control
histogram.Values = histogramValues;
</code>
<para><b>Sample control's look:</b></para>
<img src="img/controls/histogram.jpg" width="324" height="77" />
</remarks>
</member>
<member name="M:AForge.Controls.Histogram.#ctor">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.Histogram"/> class.
</summary>
</member>
<member name="M:AForge.Controls.Histogram.Dispose(System.Boolean)">
<summary>
Dispose the object.
</summary>
<param name="disposing">Indicates if disposing was initiated manually.</param>
</member>
<member name="M:AForge.Controls.Histogram.OnPaint(System.Windows.Forms.PaintEventArgs)">
<summary>
Paint the control.
</summary>
<param name="pe">Data for Paint event.</param>
</member>
<member name="P:AForge.Controls.Histogram.Color">
<summary>
Histogram's color.
</summary>
</member>
<member name="P:AForge.Controls.Histogram.AllowSelection">
<summary>
Allow mouse selection or not.
</summary>
<remarks>In the case if mouse selection is allowed, the control will
fire <see cref="E:AForge.Controls.Histogram.SelectionChanged"/> and <see cref="E:AForge.Controls.Histogram.PositionChanged"/> events
and provide information about the selection.</remarks>
</member>
<member name="P:AForge.Controls.Histogram.IsLogarithmicView">
<summary>
Logarithmic view or not.
</summary>
<remarks><para>In the case if logarihmic view is selected, then the control
will display base 10 logarithm of values.</para>
<para>By default the property is set to <b>false</b> - none logarithmic view.</para></remarks>
</member>
<member name="P:AForge.Controls.Histogram.IsVertical">
<summary>
Vertical view or not.
</summary>
<remarks><para>The property determines if histogram should be displayed vertically or
not (horizontally).</para>
<para>By default the property is set to <b>false</b> - horizontal view.</para></remarks>
</member>
<member name="P:AForge.Controls.Histogram.Values">
<summary>
Histogram values.
</summary>
<remarks>Non-negative histogram values.</remarks>
<exception cref="T:System.ArgumentException">Histogram values should be non-negative.</exception>
</member>
<member name="E:AForge.Controls.Histogram.PositionChanged">
<summary>
Mouse position changed event.
</summary>
<remarks>The event is fired only if the <see cref="P:AForge.Controls.Histogram.AllowSelection"/> property is set
to true. The passed to event handler <see cref="T:AForge.Controls.HistogramEventArgs"/> class is initialized
with <see cref="P:AForge.Controls.HistogramEventArgs.Position"/> property only, which is histogram value's
index pointed by mouse.</remarks>
</member>
<member name="E:AForge.Controls.Histogram.SelectionChanged">
<summary>
Mouse selection changed event.
</summary>
<remarks>The event is fired only if the <see cref="P:AForge.Controls.Histogram.AllowSelection"/> property is set
to true. The passed to event handler <see cref="T:AForge.Controls.HistogramEventArgs"/> class is initialized
with <see cref="P:AForge.Controls.HistogramEventArgs.Min"/> and <see cref="P:AForge.Controls.HistogramEventArgs.Max"/> properties
only, which represent selection range - min and max indexes.</remarks>
</member>
<member name="T:AForge.Controls.Chart">
<summary>
Chart control.
</summary>
<remarks><para>The chart control allows to display multiple charts at time
of different types: dots, lines, connected dots.</para>
<para>Sample usage:</para>
<code>
// create data series array
double[,] testValues = new double[10, 2];
// fill data series
for ( int i = 0; i &lt; 10; i++ )
{
testValues[i, 0] = i; // X values
testValues[i, 1] = Math.Sin( i / 18.0 * Math.PI ); // Y values
}
// add new data series to the chart
chart.AddDataSeries( "Test", Color.DarkGreen, Chart.SeriesType.ConnectedDots, 3 );
// set X range to display
chart.RangeX = new AForge.Range( 0, 9 );
// update the chart
chart.UpdateDataSeries( "Test", testValues );
</code>
</remarks>
</member>
<member name="F:AForge.Controls.Chart.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:AForge.Controls.Chart.#ctor">
<summary>
Initializes a new instance of the <see cref="T:AForge.Controls.Chart"/> class.
</summary>
</member>
<member name="M:AForge.Controls.Chart.Dispose(System.Boolean)">
<summary>
Dispose the object.
</summary>
</member>
<member name="M:AForge.Controls.Chart.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="M:AForge.Controls.Chart.AddDataSeries(System.String,System.Drawing.Color,AForge.Controls.Chart.SeriesType,System.Int32)">
<summary>
Add data series to the chart.
</summary>
<param name="name">Data series name.</param>
<param name="color">Data series color.</param>
<param name="type">Data series type.</param>
<param name="width">Width (depends on the data series type, see remarks).</param>
<remarks><para>Adds new empty data series to the collection of data series. To update this
series the <see cref="M:AForge.Controls.Chart.UpdateDataSeries(System.String,System.Double[0:,0:])"/> method should be used.</para>
<para>The meaning of the width parameter depends on the data series type:
<list type="bullet">
<item><b>Line</b> - width of the line;</item>
<item><b>Dots</b> - size of dots (rectangular dots with specified width and the same height);</item>
<item><b>Connected dots</b> - size of dots (dots are connected with one pixel width line).</item>
</list>
</para>
</remarks>
</member>
<member name="M:AForge.Controls.Chart.AddDataSeries(System.String,System.Drawing.Color,AForge.Controls.Chart.SeriesType,System.Int32,System.Boolean)">
<summary>
Add data series to the chart.
</summary>
<param name="name">Data series name.</param>
<param name="color">Data series color.</param>
<param name="type">Data series type.</param>
<param name="width">Width (depends on the data series type, see remarks).</param>
<param name="updateYRange">Specifies if <see cref="P:AForge.Controls.Chart.RangeY"/> should be updated.</param>
<remarks><para>Adds new empty data series to the collection of data series.</para>
<para>The <b>updateYRange</b> parameter specifies if the data series may affect displayable
Y range. If the value is set to false, then displayable Y range is not updated, but used the
range, which was specified by user (see <see cref="P:AForge.Controls.Chart.RangeY"/> property). In the case if the
value is set to true, the displayable Y range is recalculated to fully fit the new data
series.</para>
</remarks>
</member>
<member name="M:AForge.Controls.Chart.UpdateDataSeries(System.String,System.Double[0:,0:])">
<summary>
Update data series on the chart.
</summary>
<param name="name">Data series name to update.</param>
<param name="data">Data series values.</param>
</member>
<member name="M:AForge.Controls.Chart.RemoveDataSeries(System.String)">
<summary>
Remove data series from the chart.
</summary>
<param name="name">Data series name to remove.</param>
</member>
<member name="M:AForge.Controls.Chart.RemoveAllDataSeries">
<summary>
Remove all data series from the chart.
</summary>
</member>
<member name="M:AForge.Controls.Chart.UpdateYRange">
<summary>
Update Y range.
</summary>
</member>
<member name="P:AForge.Controls.Chart.RangeX">
<summary>
Chart's X range.
</summary>
<remarks><para>The value sets the X range of data to be displayed on the chart.</para></remarks>
</member>
<member name="P:AForge.Controls.Chart.RangeY">
<summary>
Chart's Y range.
</summary>
<remarks>The value sets the Y range of data to be displayed on the chart.</remarks>
</member>
<member name="T:AForge.Controls.Chart.SeriesType">
<summary>
Chart series type enumeration.
</summary>
</member>
<member name="F:AForge.Controls.Chart.SeriesType.Line">
<summary>
Line style.
</summary>
</member>
<member name="F:AForge.Controls.Chart.SeriesType.Dots">
<summary>
Dots style.
</summary>
</member>
<member name="F:AForge.Controls.Chart.SeriesType.ConnectedDots">
<summary>
Connected dots style.
</summary>
</member>
</members>
</doc>
此文件的差异太大,无法显示。
此文件的差异太大,无法显示。
<?xml version="1.0"?>
<doc>
<assembly>
<name>AForge.Video</name>
</assembly>
<members>
<member name="T:AForge.Video.AsyncVideoSource">
<summary>
Proxy video source for asynchronous processing of another nested video source.
</summary>
<remarks><para>The class represents a simple proxy, which wraps the specified <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource"/>
with the aim of asynchronous processing of received video frames. The class intercepts <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/>
event from the nested video source and fires it to clients from its own thread, which is different from the thread
used by nested video source for video acquisition. This allows clients to perform processing of video frames
without blocking video acquisition thread, which continue to run and acquire next video frame while current is still
processed.</para>
<para>For example, let’s suppose that it takes 100 ms for the nested video source to acquire single frame, so the original
frame rate is 10 frames per second. Also let’s assume that we have an image processing routine, which also takes
100 ms to process a single frame. If the acquisition and processing are done sequentially, then resulting
frame rate will drop to 5 frames per second. However, if doing both in parallel, then there is a good chance to
keep resulting frame rate equal (or close) to the original frame rate.</para>
<para>The class provides a bonus side effect - easer debugging of image processing routines, which are put into
<see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event handler. In many cases video source classes fire their <see cref="E:AForge.Video.IVideoSource.NewFrame"/>
event from a try/catch block, which makes it very hard to spot error made in user's code - the catch block simply
hides exception raised in user’s code. The <see cref="T:AForge.Video.AsyncVideoSource"/> does not have any try/catch blocks around
firing of <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event, so always user gets exception in the case it comes from his code. At the same time
nested video source is not affected by the user's exception, since it runs in different thread.</para>
<para>Sample usage:</para>
<code>
// usage of AsyncVideoSource is the same as usage of any
// other video source class, so code change is very little
// create nested video source, for example JPEGStream
JPEGStream stream = new JPEGStream( "some url" );
// create async video source
AsyncVideoSource asyncSource = new AsyncVideoSource( stream );
// set NewFrame event handler
asyncSource.NewFrame += new NewFrameEventHandler( video_NewFrame );
// start the video source
asyncSource.Start( );
// ...
private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
{
// get new frame
Bitmap bitmap = eventArgs.Frame;
// process the frame
}
</code>
</remarks>
</member>
<member name="T:AForge.Video.IVideoSource">
<summary>
Video source interface.
</summary>
<remarks>The interface describes common methods for different type of video sources.</remarks>
</member>
<member name="M:AForge.Video.IVideoSource.Start">
<summary>
Start video source.
</summary>
<remarks>Starts video source and return execution to caller. Video source
object creates background thread and notifies about new frames with the
help of <see cref="E:AForge.Video.IVideoSource.NewFrame"/> event.</remarks>
</member>
<member name="M:AForge.Video.IVideoSource.SignalToStop">
<summary>
Signal video source to stop its work.
</summary>
<remarks>Signals video source to stop its background thread, stop to
provide new frames and free resources.</remarks>
</member>
<member name="M:AForge.Video.IVideoSource.WaitForStop">
<summary>
Wait for video source has stopped.
</summary>
<remarks>Waits for video source stopping after it was signalled to stop using
<see cref="M:AForge.Video.IVideoSource.SignalToStop"/> method.</remarks>
</member>
<member name="M:AForge.Video.IVideoSource.Stop">
<summary>
Stop video source.
</summary>
<remarks>Stops video source aborting its thread.</remarks>
</member>
<member name="E:AForge.Video.IVideoSource.NewFrame">
<summary>
New frame event.
</summary>
<remarks><para>This event is used to notify clients about new available video frame.</para>
<para><note>Since video source may have multiple clients, each client is responsible for
making a copy (cloning) of the passed video frame, but video source is responsible for
disposing its own original copy after notifying of clients.</note></para>
</remarks>
</member>
<member name="E:AForge.Video.IVideoSource.VideoSourceError">
<summary>
Video source error event.
</summary>
<remarks>This event is used to notify clients about any type of errors occurred in
video source object, for example internal exceptions.</remarks>
</member>
<member name="E:AForge.Video.IVideoSource.PlayingFinished">
<summary>
Video playing finished event.
</summary>
<remarks><para>This event is used to notify clients that the video playing has finished.</para>
</remarks>
</member>
<member name="P:AForge.Video.IVideoSource.Source">
<summary>
Video source.
</summary>
<remarks>The meaning of the property depends on particular video source.
Depending on video source it may be a file name, URL or any other string
describing the video source.</remarks>
</member>
<member name="P:AForge.Video.IVideoSource.FramesReceived">
<summary>
Received frames count.
</summary>
<remarks>Number of frames the video source provided from the moment of the last
access to the property.
</remarks>
</member>
<member name="P:AForge.Video.IVideoSource.BytesReceived">
<summary>
Received bytes count.
</summary>
<remarks>Number of bytes the video source provided from the moment of the last
access to the property.
</remarks>
</member>
<member name="P:AForge.Video.IVideoSource.IsRunning">
<summary>
State of the video source.
</summary>
<remarks>Current state of video source object - running or not.</remarks>
</member>
<member name="M:AForge.Video.AsyncVideoSource.#ctor(AForge.Video.IVideoSource)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Video.AsyncVideoSource"/> class.
</summary>
<param name="nestedVideoSource">Nested video source which is the target for asynchronous processing.</param>
</member>
<member name="M:AForge.Video.AsyncVideoSource.#ctor(AForge.Video.IVideoSource,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Video.AsyncVideoSource"/> class.
</summary>
<param name="nestedVideoSource">Nested video source which is the target for asynchronous processing.</param>
<param name="skipFramesIfBusy">Specifies if the object should skip frames from the nested video source
in the case if it is still busy processing the previous video frame.</param>
</member>
<member name="M:AForge.Video.AsyncVideoSource.Start">
<summary>
Start video source.
</summary>
<remarks><para>Starts the nested video source and returns execution to caller. This object creates
an extra thread which is used to fire <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> events, so the image processing could be
done on another thread without blocking video acquisition thread.</para></remarks>
</member>
<member name="M:AForge.Video.AsyncVideoSource.SignalToStop">
<summary>
Signal video source to stop its work.
</summary>
<remarks><para>Signals video source to stop its background thread, stop to
provide new frames and free resources.</para></remarks>
</member>
<member name="M:AForge.Video.AsyncVideoSource.WaitForStop">
<summary>
Wait for video source has stopped.
</summary>
<remarks><para>Waits for video source stopping after it was signalled to stop using
<see cref="M:AForge.Video.AsyncVideoSource.SignalToStop"/> method.</para></remarks>
</member>
<member name="M:AForge.Video.AsyncVideoSource.Stop">
<summary>
Stop video source.
</summary>
<remarks><para>Stops nested video source by calling its <see cref="M:AForge.Video.IVideoSource.Stop"/> method.
See documentation of the particular video source for additional details.</para></remarks>
</member>
<member name="E:AForge.Video.AsyncVideoSource.NewFrame">
<summary>
New frame event.
</summary>
<remarks><para>Notifies clients about new available frame from video source.</para>
<para><note>This event is fired from a different thread other than the video acquisition thread created
by <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource"/>. This allows nested video frame to continue acquisition of the next
video frame while clients perform processing of the current video frame.</note></para>
<para><note>Since video source may have multiple clients, each client is responsible for
making a copy (cloning) of the passed video frame, because the video source disposes its
own original copy after notifying of clients.</note></para>
</remarks>
</member>
<member name="E:AForge.Video.AsyncVideoSource.VideoSourceError">
<summary>
Video source error event.
</summary>
<remarks><para>This event is used to notify clients about any type of errors occurred in
video source object, for example internal exceptions.</para>
<para><note>Unlike <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event, this event is simply redirected to the corresponding
event of the <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource"/>, so it is fired from the thread of the nested video source.</note></para>
</remarks>
</member>
<member name="E:AForge.Video.AsyncVideoSource.PlayingFinished">
<summary>
Video playing finished event.
</summary>
<remarks><para>This event is used to notify clients that the video playing has finished.</para>
<para><note>Unlike <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event, this event is simply redirected to the corresponding
event of the <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource"/>, so it is fired from the thread of the nested video source.</note></para>
</remarks>
</member>
<member name="P:AForge.Video.AsyncVideoSource.NestedVideoSource">
<summary>
Nested video source which is the target for asynchronous processing.
</summary>
<remarks><para>The property is set through the class constructor.</para>
<para>All calls to this object are actually redirected to the nested video source. The only
exception is the <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event, which is handled differently. This object gets
<see cref="E:AForge.Video.IVideoSource.NewFrame"/> event from the nested class and then fires another
<see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event, but from a different thread.</para>
</remarks>
</member>
<member name="P:AForge.Video.AsyncVideoSource.SkipFramesIfBusy">
<summary>
Specifies if the object should skip frames from the nested video source when it is busy.
</summary>
<remarks><para>Specifies if the object should skip frames from the nested video source
in the case if it is still busy processing the previous video frame in its own thread.</para>
<para>Default value is set to <see langword="false"/>.</para></remarks>
</member>
<member name="P:AForge.Video.AsyncVideoSource.Source">
<summary>
Video source string.
</summary>
<remarks><para>The property is redirected to the corresponding property of <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource"/>,
so check its documentation to find what it means.</para></remarks>
</member>
<member name="P:AForge.Video.AsyncVideoSource.FramesReceived">
<summary>
Received frames count.
</summary>
<remarks><para>Number of frames the <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource">nested video source</see> received from
the moment of the last access to the property.</para>
</remarks>
</member>
<member name="P:AForge.Video.AsyncVideoSource.BytesReceived">
<summary>
Received bytes count.
</summary>
<remarks><para>Number of bytes the <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource">nested video source</see> received from
the moment of the last access to the property.</para></remarks>
</member>
<member name="P:AForge.Video.AsyncVideoSource.FramesProcessed">
<summary>
Processed frames count.
</summary>
<remarks><para>The property keeps the number of processed video frames since the last access to this property.
</para>
<para>The value of this property equals to <see cref="P:AForge.Video.AsyncVideoSource.FramesReceived"/> in most cases if the
<see cref="P:AForge.Video.AsyncVideoSource.SkipFramesIfBusy"/> property is set to <see langword="false"/> - every received frame gets processed
sooner or later. However, if the <see cref="P:AForge.Video.AsyncVideoSource.SkipFramesIfBusy"/> property is set to <see langword="true"/>,
then value of this property may be lower than the value of the <see cref="P:AForge.Video.AsyncVideoSource.FramesReceived"/> property, which
means that nested video source performs acquisition faster than client perform processing of the received frame
and some frame are skipped from processing.</para>
</remarks>
</member>
<member name="P:AForge.Video.AsyncVideoSource.IsRunning">
<summary>
State of the video source.
</summary>
<remarks><para>Current state of the video source object - running or not.</para></remarks>
</member>
<member name="T:AForge.Video.ScreenCaptureStream">
<summary>
Screen capture video source.
</summary>
<remarks><para>The video source constantly captures the desktop screen.</para>
<para>Sample usage:</para>
<code>
// get entire desktop area size
Rectangle screenArea = Rectangle.Empty;
foreach ( System.Windows.Forms.Screen screen in
System.Windows.Forms.Screen.AllScreens )
{
screenArea = Rectangle.Union( screenArea, screen.Bounds );
}
// create screen capture video source
ScreenCaptureStream stream = new ScreenCaptureStream( screenArea );
// set NewFrame event handler
stream.NewFrame += new NewFrameEventHandler( video_NewFrame );
// start the video source
stream.Start( );
// ...
// signal to stop
stream.SignalToStop( );
// ...
private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
{
// get new frame
Bitmap bitmap = eventArgs.Frame;
// process the frame
}
</code>
</remarks>
</member>
<member name="M:AForge.Video.ScreenCaptureStream.#ctor(System.Drawing.Rectangle)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Video.ScreenCaptureStream"/> class.
</summary>
<param name="region">Screen's rectangle to capture (the rectangle may cover multiple displays).</param>
</member>
<member name="M:AForge.Video.ScreenCaptureStream.#ctor(System.Drawing.Rectangle,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Video.ScreenCaptureStream"/> class.
</summary>
<param name="region">Screen's rectangle to capture (the rectangle may cover multiple displays).</param>
<param name="frameInterval">Time interval between making screen shots, ms.</param>
</member>
<member name="M:AForge.Video.ScreenCaptureStream.Start">
<summary>
Start video source.
</summary>
<remarks>Starts video source and return execution to caller. Video source
object creates background thread and notifies about new frames with the
help of <see cref="E:AForge.Video.ScreenCaptureStream.NewFrame"/> event.</remarks>
<exception cref="T:System.ArgumentException">Video source is not specified.</exception>
</member>
<member name="M:AForge.Video.ScreenCaptureStream.SignalToStop">
<summary>
Signal video source to stop its work.
</summary>
<remarks>Signals video source to stop its background thread, stop to
provide new frames and free resources.</remarks>
</member>
<member name="M:AForge.Video.ScreenCaptureStream.WaitForStop">
<summary>
Wait for video source has stopped.
</summary>
<remarks>Waits for source stopping after it was signalled to stop using
<see cref="M:AForge.Video.ScreenCaptureStream.SignalToStop"/> method.</remarks>
</member>
<member name="M:AForge.Video.ScreenCaptureStream.Stop">
<summary>
Stop video source.
</summary>
<remarks><para>Stops video source aborting its thread.</para>
<para><note>Since the method aborts background thread, its usage is highly not preferred
and should be done only if there are no other options. The correct way of stopping camera
is <see cref="M:AForge.Video.ScreenCaptureStream.SignalToStop">signaling it stop</see> and then
<see cref="M:AForge.Video.ScreenCaptureStream.WaitForStop">waiting</see> for background thread's completion.</note></para>
</remarks>
</member>
<member name="M:AForge.Video.ScreenCaptureStream.Free">
<summary>
Free resource.
</summary>
</member>
<member name="E:AForge.Video.ScreenCaptureStream.NewFrame">
<summary>
New frame event.
</summary>
<remarks><para>Notifies clients about new available frame from video source.</para>
<para><note>Since video source may have multiple clients, each client is responsible for
making a copy (cloning) of the passed video frame, because the video source disposes its
own original copy after notifying of clients.</note></para>
</remarks>
</member>
<member name="E:AForge.Video.ScreenCaptureStream.VideoSourceError">
<summary>
Video source error event.
</summary>
<remarks>This event is used to notify clients about any type of errors occurred in
video source object, for example internal exceptions.</remarks>
</member>
<member name="E:AForge.Video.ScreenCaptureStream.PlayingFinished">
<summary>
Video playing finished event.
</summary>
<remarks><para>This event is used to notify clients that the video playing has finished.</para>
</remarks>
</member>
<member name="P:AForge.Video.ScreenCaptureStream.Source">
<summary>
Video source.
</summary>
</member>
<member name="P:AForge.Video.ScreenCaptureStream.Region">
<summary>
Gets or sets the screen capture region.
</summary>
<remarks><para>This property specifies which region (rectangle) of the screen to capture. It may cover multiple displays
if those are available in the system.</para>
<para><note>The property must be set before starting video source to have any effect.</note></para>
</remarks>
</member>
<member name="P:AForge.Video.ScreenCaptureStream.FrameInterval">
<summary>
Time interval between making screen shots, ms.
</summary>
<remarks><para>The property specifies time interval in milliseconds between consequent screen captures.
Expected frame rate of the stream should be approximately 1000/FrameInteval.</para>
<para>If the property is set to 0, then the stream will capture screen as fast as the system allows.</para>
<para>Default value is set to <b>100</b>.</para>
</remarks>
</member>
<member name="P:AForge.Video.ScreenCaptureStream.FramesReceived">
<summary>
Received frames count.
</summary>
<remarks>Number of frames the video source provided from the moment of the last
access to the property.
</remarks>
</member>
<member name="P:AForge.Video.ScreenCaptureStream.BytesReceived">
<summary>
Received bytes count.
</summary>
<remarks><para><note>The property is not implemented for this video source and always returns 0.</note></para>
</remarks>
</member>
<member name="P:AForge.Video.ScreenCaptureStream.IsRunning">
<summary>
State of the video source.
</summary>
<remarks>Current state of video source object - running or not.</remarks>
</member>
<member name="T:AForge.Video.MJPEGStream">
<summary>
MJPEG video source.
</summary>
<remarks><para>The video source downloads JPEG images from the specified URL, which represents
MJPEG stream.</para>
<para>Sample usage:</para>
<code>
// create MJPEG video source
MJPEGStream stream = new MJPEGStream( "some url" );
// set event handlers
stream.NewFrame += new NewFrameEventHandler( video_NewFrame );
// start the video source
stream.Start( );
// ...
</code>
<para><note>Some cameras produce HTTP header, which does not conform strictly to
standard, what leads to .NET exception. To avoid this exception the <b>useUnsafeHeaderParsing</b>
configuration option of <b>httpWebRequest</b> should be set, what may be done using application
configuration file.</note></para>
<code>
&lt;configuration&gt;
&lt;system.net&gt;
&lt;settings&gt;
&lt;httpWebRequest useUnsafeHeaderParsing="true" /&gt;
&lt;/settings&gt;
&lt;/system.net&gt;
&lt;/configuration&gt;
</code>
</remarks>
</member>
<member name="M:AForge.Video.MJPEGStream.#ctor">
<summary>
Initializes a new instance of the <see cref="T:AForge.Video.MJPEGStream"/> class.
</summary>
</member>
<member name="M:AForge.Video.MJPEGStream.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Video.MJPEGStream"/> class.
</summary>
<param name="source">URL, which provides MJPEG stream.</param>
</member>
<member name="M:AForge.Video.MJPEGStream.Start">
<summary>
Start video source.
</summary>
<remarks>Starts video source and return execution to caller. Video source
object creates background thread and notifies about new frames with the
help of <see cref="E:AForge.Video.MJPEGStream.NewFrame"/> event.</remarks>
<exception cref="T:System.ArgumentException">Video source is not specified.</exception>
</member>
<member name="M:AForge.Video.MJPEGStream.SignalToStop">
<summary>
Signal video source to stop its work.
</summary>
<remarks>Signals video source to stop its background thread, stop to
provide new frames and free resources.</remarks>
</member>
<member name="M:AForge.Video.MJPEGStream.WaitForStop">
<summary>
Wait for video source has stopped.
</summary>
<remarks>Waits for source stopping after it was signalled to stop using
<see cref="M:AForge.Video.MJPEGStream.SignalToStop"/> method.</remarks>
</member>
<member name="M:AForge.Video.MJPEGStream.Stop">
<summary>
Stop video source.
</summary>
<remarks><para>Stops video source aborting its thread.</para>
<para><note>Since the method aborts background thread, its usage is highly not preferred
and should be done only if there are no other options. The correct way of stopping camera
is <see cref="M:AForge.Video.MJPEGStream.SignalToStop">signaling it stop</see> and then
<see cref="M:AForge.Video.MJPEGStream.WaitForStop">waiting</see> for background thread's completion.</note></para>
</remarks>
</member>
<member name="M:AForge.Video.MJPEGStream.Free">
<summary>
Free resource.
</summary>
</member>
<member name="E:AForge.Video.MJPEGStream.NewFrame">
<summary>
New frame event.
</summary>
<remarks><para>Notifies clients about new available frame from video source.</para>
<para><note>Since video source may have multiple clients, each client is responsible for
making a copy (cloning) of the passed video frame, because the video source disposes its
own original copy after notifying of clients.</note></para>
</remarks>
</member>
<member name="E:AForge.Video.MJPEGStream.VideoSourceError">
<summary>
Video source error event.
</summary>
<remarks>This event is used to notify clients about any type of errors occurred in
video source object, for example internal exceptions.</remarks>
</member>
<member name="E:AForge.Video.MJPEGStream.PlayingFinished">
<summary>
Video playing finished event.
</summary>
<remarks><para>This event is used to notify clients that the video playing has finished.</para>
</remarks>
</member>
<member name="P:AForge.Video.MJPEGStream.SeparateConnectionGroup">
<summary>
Use or not separate connection group.
</summary>
<remarks>The property indicates to open web request in separate connection group.</remarks>
</member>
<member name="P:AForge.Video.MJPEGStream.Source">
<summary>
Video source.
</summary>
<remarks>URL, which provides MJPEG stream.</remarks>
</member>
<member name="P:AForge.Video.MJPEGStream.Login">
<summary>
Login value.
</summary>
<remarks>Login required to access video source.</remarks>
</member>
<member name="P:AForge.Video.MJPEGStream.Password">
<summary>
Password value.
</summary>
<remarks>Password required to access video source.</remarks>
</member>
<member name="P:AForge.Video.MJPEGStream.Proxy">
<summary>
Gets or sets proxy information for the request.
</summary>
<remarks><para>The local computer or application config file may specify that a default
proxy to be used. If the Proxy property is specified, then the proxy settings from the Proxy
property overridea the local computer or application config file and the instance will use
the proxy settings specified. If no proxy is specified in a config file
and the Proxy property is unspecified, the request uses the proxy settings
inherited from Internet Explorer on the local computer. If there are no proxy settings
in Internet Explorer, the request is sent directly to the server.
</para></remarks>
</member>
<member name="P:AForge.Video.MJPEGStream.HttpUserAgent">
<summary>
User agent to specify in HTTP request header.
</summary>
<remarks><para>Some IP cameras check what is the requesting user agent and depending
on it they provide video in different formats or do not provide it at all. The property
sets the value of user agent string, which is sent to camera in request header.
</para>
<para>Default value is set to "Mozilla/5.0". If the value is set to <see langword="null"/>,
the user agent string is not sent in request header.</para>
</remarks>
</member>
<member name="P:AForge.Video.MJPEGStream.FramesReceived">
<summary>
Received frames count.
</summary>
<remarks>Number of frames the video source provided from the moment of the last
access to the property.
</remarks>
</member>
<member name="P:AForge.Video.MJPEGStream.BytesReceived">
<summary>
Received bytes count.
</summary>
<remarks>Number of bytes the video source provided from the moment of the last
access to the property.
</remarks>
</member>
<member name="P:AForge.Video.MJPEGStream.RequestTimeout">
<summary>
Request timeout value.
</summary>
<remarks>The property sets timeout value in milliseconds for web requests.
Default value is 10000 milliseconds.</remarks>
</member>
<member name="P:AForge.Video.MJPEGStream.IsRunning">
<summary>
State of the video source.
</summary>
<remarks>Current state of video source object - running or not.</remarks>
</member>
<member name="P:AForge.Video.MJPEGStream.ForceBasicAuthentication">
<summary>
Force using of basic authentication when connecting to the video source.
</summary>
<remarks><para>For some IP cameras (TrendNET IP cameras, for example) using standard .NET's authentication via credentials
does not seem to be working (seems like camera does not request for authentication, but expects corresponding headers to be
present on connection request). So this property allows to force basic authentication by adding required HTTP headers when
request is sent.</para>
<para>Default value is set to <see langword="false"/>.</para>
</remarks>
</member>
<member name="T:AForge.Video.VideoException">
<summary>
Video related exception.
</summary>
<remarks><para>The exception is thrown in the case of some video related issues, like
failure of initializing codec, compression, etc.</para></remarks>
</member>
<member name="M:AForge.Video.VideoException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Video.VideoException"/> class.
</summary>
<param name="message">Exception's message.</param>
</member>
<member name="T:AForge.Video.NewFrameEventHandler">
<summary>
Delegate for new frame event handler.
</summary>
<param name="sender">Sender object.</param>
<param name="eventArgs">Event arguments.</param>
</member>
<member name="T:AForge.Video.VideoSourceErrorEventHandler">
<summary>
Delegate for video source error event handler.
</summary>
<param name="sender">Sender object.</param>
<param name="eventArgs">Event arguments.</param>
</member>
<member name="T:AForge.Video.PlayingFinishedEventHandler">
<summary>
Delegate for playing finished event handler.
</summary>
<param name="sender">Sender object.</param>
<param name="reason">Reason of finishing video playing.</param>
</member>
<member name="T:AForge.Video.ReasonToFinishPlaying">
<summary>
Reason of finishing video playing.
</summary>
<remarks><para>When video source class fire the <see cref="E:AForge.Video.IVideoSource.PlayingFinished"/> event, they
need to specify reason of finishing video playing. For example, it may be end of stream reached.</para></remarks>
</member>
<member name="F:AForge.Video.ReasonToFinishPlaying.EndOfStreamReached">
<summary>
Video playing has finished because it end was reached.
</summary>
</member>
<member name="F:AForge.Video.ReasonToFinishPlaying.StoppedByUser">
<summary>
Video playing has finished because it was stopped by user.
</summary>
</member>
<member name="F:AForge.Video.ReasonToFinishPlaying.DeviceLost">
<summary>
Video playing has finished because the device was lost (unplugged).
</summary>
</member>
<member name="F:AForge.Video.ReasonToFinishPlaying.VideoSourceError">
<summary>
Video playing has finished because of some error happened the video source (camera, stream, file, etc.).
A error reporting event usually is fired to provide error information.
</summary>
</member>
<member name="T:AForge.Video.NewFrameEventArgs">
<summary>
Arguments for new frame event from video source.
</summary>
</member>
<member name="M:AForge.Video.NewFrameEventArgs.#ctor(System.Drawing.Bitmap)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Video.NewFrameEventArgs"/> class.
</summary>
<param name="frame">New frame.</param>
</member>
<member name="P:AForge.Video.NewFrameEventArgs.Frame">
<summary>
New frame from video source.
</summary>
</member>
<member name="T:AForge.Video.VideoSourceErrorEventArgs">
<summary>
Arguments for video source error event from video source.
</summary>
</member>
<member name="M:AForge.Video.VideoSourceErrorEventArgs.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Video.VideoSourceErrorEventArgs"/> class.
</summary>
<param name="description">Error description.</param>
</member>
<member name="P:AForge.Video.VideoSourceErrorEventArgs.Description">
<summary>
Video source error description.
</summary>
</member>
<member name="T:AForge.Video.JPEGStream">
<summary>
JPEG video source.
</summary>
<remarks><para>The video source constantly downloads JPEG files from the specified URL.</para>
<para>Sample usage:</para>
<code>
// create JPEG video source
JPEGStream stream = new JPEGStream( "some url" );
// set NewFrame event handler
stream.NewFrame += new NewFrameEventHandler( video_NewFrame );
// start the video source
stream.Start( );
// ...
// signal to stop
stream.SignalToStop( );
// ...
private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
{
// get new frame
Bitmap bitmap = eventArgs.Frame;
// process the frame
}
</code>
<para><note>Some cameras produce HTTP header, which does not conform strictly to
standard, what leads to .NET exception. To avoid this exception the <b>useUnsafeHeaderParsing</b>
configuration option of <b>httpWebRequest</b> should be set, what may be done using application
configuration file.</note></para>
<code>
&lt;configuration&gt;
&lt;system.net&gt;
&lt;settings&gt;
&lt;httpWebRequest useUnsafeHeaderParsing="true" /&gt;
&lt;/settings&gt;
&lt;/system.net&gt;
&lt;/configuration&gt;
</code>
</remarks>
</member>
<member name="M:AForge.Video.JPEGStream.#ctor">
<summary>
Initializes a new instance of the <see cref="T:AForge.Video.JPEGStream"/> class.
</summary>
</member>
<member name="M:AForge.Video.JPEGStream.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Video.JPEGStream"/> class.
</summary>
<param name="source">URL, which provides JPEG files.</param>
</member>
<member name="M:AForge.Video.JPEGStream.Start">
<summary>
Start video source.
</summary>
<remarks>Starts video source and return execution to caller. Video source
object creates background thread and notifies about new frames with the
help of <see cref="E:AForge.Video.JPEGStream.NewFrame"/> event.</remarks>
<exception cref="T:System.ArgumentException">Video source is not specified.</exception>
</member>
<member name="M:AForge.Video.JPEGStream.SignalToStop">
<summary>
Signal video source to stop its work.
</summary>
<remarks>Signals video source to stop its background thread, stop to
provide new frames and free resources.</remarks>
</member>
<member name="M:AForge.Video.JPEGStream.WaitForStop">
<summary>
Wait for video source has stopped.
</summary>
<remarks>Waits for source stopping after it was signalled to stop using
<see cref="M:AForge.Video.JPEGStream.SignalToStop"/> method.</remarks>
</member>
<member name="M:AForge.Video.JPEGStream.Stop">
<summary>
Stop video source.
</summary>
<remarks><para>Stops video source aborting its thread.</para>
<para><note>Since the method aborts background thread, its usage is highly not preferred
and should be done only if there are no other options. The correct way of stopping camera
is <see cref="M:AForge.Video.JPEGStream.SignalToStop">signaling it stop</see> and then
<see cref="M:AForge.Video.JPEGStream.WaitForStop">waiting</see> for background thread's completion.</note></para>
</remarks>
</member>
<member name="M:AForge.Video.JPEGStream.Free">
<summary>
Free resource.
</summary>
</member>
<member name="E:AForge.Video.JPEGStream.NewFrame">
<summary>
New frame event.
</summary>
<remarks><para>Notifies clients about new available frame from video source.</para>
<para><note>Since video source may have multiple clients, each client is responsible for
making a copy (cloning) of the passed video frame, because the video source disposes its
own original copy after notifying of clients.</note></para>
</remarks>
</member>
<member name="E:AForge.Video.JPEGStream.VideoSourceError">
<summary>
Video source error event.
</summary>
<remarks>This event is used to notify clients about any type of errors occurred in
video source object, for example internal exceptions.</remarks>
</member>
<member name="E:AForge.Video.JPEGStream.PlayingFinished">
<summary>
Video playing finished event.
</summary>
<remarks><para>This event is used to notify clients that the video playing has finished.</para>
</remarks>
</member>
<member name="P:AForge.Video.JPEGStream.SeparateConnectionGroup">
<summary>
Use or not separate connection group.
</summary>
<remarks>The property indicates to open web request in separate connection group.</remarks>
</member>
<member name="P:AForge.Video.JPEGStream.PreventCaching">
<summary>
Use or not caching.
</summary>
<remarks>If the property is set to <b>true</b>, then a fake random parameter will be added
to URL to prevent caching. It's required for clients, who are behind proxy server.</remarks>
</member>
<member name="P:AForge.Video.JPEGStream.FrameInterval">
<summary>
Frame interval.
</summary>
<remarks>The property sets the interval in milliseconds betwen frames. If the property is
set to 100, then the desired frame rate will be 10 frames per second. Default value is 0 -
get new frames as fast as possible.</remarks>
</member>
<member name="P:AForge.Video.JPEGStream.Source">
<summary>
Video source.
</summary>
<remarks>URL, which provides JPEG files.</remarks>
</member>
<member name="P:AForge.Video.JPEGStream.Login">
<summary>
Login value.
</summary>
<remarks>Login required to access video source.</remarks>
</member>
<member name="P:AForge.Video.JPEGStream.Password">
<summary>
Password value.
</summary>
<remarks>Password required to access video source.</remarks>
</member>
<member name="P:AForge.Video.JPEGStream.Proxy">
<summary>
Gets or sets proxy information for the request.
</summary>
<remarks><para>The local computer or application config file may specify that a default
proxy to be used. If the Proxy property is specified, then the proxy settings from the Proxy
property overridea the local computer or application config file and the instance will use
the proxy settings specified. If no proxy is specified in a config file
and the Proxy property is unspecified, the request uses the proxy settings
inherited from Internet Explorer on the local computer. If there are no proxy settings
in Internet Explorer, the request is sent directly to the server.
</para></remarks>
</member>
<member name="P:AForge.Video.JPEGStream.FramesReceived">
<summary>
Received frames count.
</summary>
<remarks>Number of frames the video source provided from the moment of the last
access to the property.
</remarks>
</member>
<member name="P:AForge.Video.JPEGStream.BytesReceived">
<summary>
Received bytes count.
</summary>
<remarks>Number of bytes the video source provided from the moment of the last
access to the property.
</remarks>
</member>
<member name="P:AForge.Video.JPEGStream.RequestTimeout">
<summary>
Request timeout value.
</summary>
<remarks><para>The property sets timeout value in milliseconds for web requests.</para>
<para>Default value is set <b>10000</b> milliseconds.</para></remarks>
</member>
<member name="P:AForge.Video.JPEGStream.IsRunning">
<summary>
State of the video source.
</summary>
<remarks>Current state of video source object - running or not.</remarks>
</member>
<member name="P:AForge.Video.JPEGStream.ForceBasicAuthentication">
<summary>
Force using of basic authentication when connecting to the video source.
</summary>
<remarks><para>For some IP cameras (TrendNET IP cameras, for example) using standard .NET's authentication via credentials
does not seem to be working (seems like camera does not request for authentication, but expects corresponding headers to be
present on connection request). So this property allows to force basic authentication by adding required HTTP headers when
request is sent.</para>
<para>Default value is set to <see langword="false"/>.</para>
</remarks>
</member>
<member name="T:AForge.Video.ByteArrayUtils">
<summary>
Some internal utilities for handling arrays.
</summary>
</member>
<member name="M:AForge.Video.ByteArrayUtils.Compare(System.Byte[],System.Byte[],System.Int32)">
<summary>
Check if the array contains needle at specified position.
</summary>
<param name="array">Source array to check for needle.</param>
<param name="needle">Needle we are searching for.</param>
<param name="startIndex">Start index in source array.</param>
<returns>Returns <b>true</b> if the source array contains the needle at
the specified index. Otherwise it returns <b>false</b>.</returns>
</member>
<member name="M:AForge.Video.ByteArrayUtils.Find(System.Byte[],System.Byte[],System.Int32,System.Int32)">
<summary>
Find subarray in the source array.
</summary>
<param name="array">Source array to search for needle.</param>
<param name="needle">Needle we are searching for.</param>
<param name="startIndex">Start index in source array.</param>
<param name="sourceLength">Number of bytes in source array, where the needle is searched for.</param>
<returns>Returns starting position of the needle if it was found or <b>-1</b> otherwise.</returns>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>AForge</name>
</assembly>
<members>
<member name="T:AForge.CommunicationBufferEventArgs">
<summary>
Event arguments holding a buffer sent or received during some communication process.
</summary>
</member>
<member name="M:AForge.CommunicationBufferEventArgs.#ctor(System.Byte[])">
<summary>
Initializes a new instance of the <see cref="T:AForge.CommunicationBufferEventArgs"/> class.
</summary>
<param name="message">Message being transfered during communication process.</param>
</member>
<member name="M:AForge.CommunicationBufferEventArgs.#ctor(System.Byte[],System.Int32,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:AForge.CommunicationBufferEventArgs"/> class.
</summary>
<param name="buffer">Buffer containing the message being transferred during communication process.</param>
<param name="index">Starting index of the message within the buffer.</param>
<param name="length">Length of the message within the buffer.</param>
</member>
<member name="M:AForge.CommunicationBufferEventArgs.GetMessage">
<summary>
Get the transfered message.
</summary>
<returns>Returns copy of the transfered message.</returns>
</member>
<member name="M:AForge.CommunicationBufferEventArgs.GetMessageString">
<summary>
Get the transferred message as string.
</summary>
<returns>Returns string encoding the transferred message.</returns>
</member>
<member name="P:AForge.CommunicationBufferEventArgs.MessageLength">
<summary>
Length of the transfered message.
</summary>
</member>
<member name="T:AForge.IntPoint">
<summary>
Structure for representing a pair of coordinates of integer type.
</summary>
<remarks><para>The structure is used to store a pair of integer coordinates.</para>
<para>Sample usage:</para>
<code>
// assigning coordinates in the constructor
IntPoint p1 = new IntPoint( 10, 20 );
// creating a point and assigning coordinates later
IntPoint p2;
p2.X = 30;
p2.Y = 40;
// calculating distance between two points
float distance = p1.DistanceTo( p2 );
</code>
</remarks>
</member>
<member name="F:AForge.IntPoint.X">
<summary>
X coordinate.
</summary>
</member>
<member name="F:AForge.IntPoint.Y">
<summary>
Y coordinate.
</summary>
</member>
<member name="M:AForge.IntPoint.#ctor(System.Int32,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:AForge.IntPoint"/> structure.
</summary>
<param name="x">X axis coordinate.</param>
<param name="y">Y axis coordinate.</param>
</member>
<member name="M:AForge.IntPoint.DistanceTo(AForge.IntPoint)">
<summary>
Calculate Euclidean distance between two points.
</summary>
<param name="anotherPoint">Point to calculate distance to.</param>
<returns>Returns Euclidean distance between this point and
<paramref name="anotherPoint"/> points.</returns>
</member>
<member name="M:AForge.IntPoint.SquaredDistanceTo(AForge.Point)">
<summary>
Calculate squared Euclidean distance between two points.
</summary>
<param name="anotherPoint">Point to calculate distance to.</param>
<returns>Returns squared Euclidean distance between this point and
<paramref name="anotherPoint"/> points.</returns>
</member>
<member name="M:AForge.IntPoint.op_Addition(AForge.IntPoint,AForge.IntPoint)">
<summary>
Addition operator - adds values of two points.
</summary>
<param name="point1">First point for addition.</param>
<param name="point2">Second point for addition.</param>
<returns>Returns new point which coordinates equal to sum of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.IntPoint.Add(AForge.IntPoint,AForge.IntPoint)">
<summary>
Addition operator - adds values of two points.
</summary>
<param name="point1">First point for addition.</param>
<param name="point2">Second point for addition.</param>
<returns>Returns new point which coordinates equal to sum of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.IntPoint.op_Subtraction(AForge.IntPoint,AForge.IntPoint)">
<summary>
Subtraction operator - subtracts values of two points.
</summary>
<param name="point1">Point to subtract from.</param>
<param name="point2">Point to subtract.</param>
<returns>Returns new point which coordinates equal to difference of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.IntPoint.Subtract(AForge.IntPoint,AForge.IntPoint)">
<summary>
Subtraction operator - subtracts values of two points.
</summary>
<param name="point1">Point to subtract from.</param>
<param name="point2">Point to subtract.</param>
<returns>Returns new point which coordinates equal to difference of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.IntPoint.op_Addition(AForge.IntPoint,System.Int32)">
<summary>
Addition operator - adds scalar to the specified point.
</summary>
<param name="point">Point to increase coordinates of.</param>
<param name="valueToAdd">Value to add to coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point increased by specified value.</returns>
</member>
<member name="M:AForge.IntPoint.Add(AForge.IntPoint,System.Int32)">
<summary>
Addition operator - adds scalar to the specified point.
</summary>
<param name="point">Point to increase coordinates of.</param>
<param name="valueToAdd">Value to add to coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point increased by specified value.</returns>
</member>
<member name="M:AForge.IntPoint.op_Subtraction(AForge.IntPoint,System.Int32)">
<summary>
Subtraction operator - subtracts scalar from the specified point.
</summary>
<param name="point">Point to decrease coordinates of.</param>
<param name="valueToSubtract">Value to subtract from coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point decreased by specified value.</returns>
</member>
<member name="M:AForge.IntPoint.Subtract(AForge.IntPoint,System.Int32)">
<summary>
Subtraction operator - subtracts scalar from the specified point.
</summary>
<param name="point">Point to decrease coordinates of.</param>
<param name="valueToSubtract">Value to subtract from coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point decreased by specified value.</returns>
</member>
<member name="M:AForge.IntPoint.op_Multiply(AForge.IntPoint,System.Int32)">
<summary>
Multiplication operator - multiplies coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to multiply coordinates of.</param>
<param name="factor">Multiplication factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point multiplied by specified value.</returns>
</member>
<member name="M:AForge.IntPoint.Multiply(AForge.IntPoint,System.Int32)">
<summary>
Multiplication operator - multiplies coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to multiply coordinates of.</param>
<param name="factor">Multiplication factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point multiplied by specified value.</returns>
</member>
<member name="M:AForge.IntPoint.op_Division(AForge.IntPoint,System.Int32)">
<summary>
Division operator - divides coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to divide coordinates of.</param>
<param name="factor">Division factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point divided by specified value.</returns>
</member>
<member name="M:AForge.IntPoint.Divide(AForge.IntPoint,System.Int32)">
<summary>
Division operator - divides coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to divide coordinates of.</param>
<param name="factor">Division factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point divided by specified value.</returns>
</member>
<member name="M:AForge.IntPoint.op_Equality(AForge.IntPoint,AForge.IntPoint)">
<summary>
Equality operator - checks if two points have equal coordinates.
</summary>
<param name="point1">First point to check.</param>
<param name="point2">Second point to check.</param>
<returns>Returns <see langword="true"/> if coordinates of specified
points are equal.</returns>
</member>
<member name="M:AForge.IntPoint.op_Inequality(AForge.IntPoint,AForge.IntPoint)">
<summary>
Inequality operator - checks if two points have different coordinates.
</summary>
<param name="point1">First point to check.</param>
<param name="point2">Second point to check.</param>
<returns>Returns <see langword="true"/> if coordinates of specified
points are not equal.</returns>
</member>
<member name="M:AForge.IntPoint.Equals(System.Object)">
<summary>
Check if this instance of <see cref="T:AForge.IntPoint"/> equal to the specified one.
</summary>
<param name="obj">Another point to check equalty to.</param>
<returns>Return <see langword="true"/> if objects are equal.</returns>
</member>
<member name="M:AForge.IntPoint.GetHashCode">
<summary>
Get hash code for this instance.
</summary>
<returns>Returns the hash code for this instance.</returns>
</member>
<member name="M:AForge.IntPoint.op_Implicit(AForge.IntPoint)~AForge.Point">
<summary>
Implicit conversion to <see cref="T:AForge.Point"/>.
</summary>
<param name="point">Integer point to convert to single precision point.</param>
<returns>Returns new single precision point which coordinates are implicitly converted
to floats from coordinates of the specified integer point.</returns>
</member>
<member name="M:AForge.IntPoint.op_Implicit(AForge.IntPoint)~AForge.DoublePoint">
<summary>
Implicit conversion to <see cref="T:AForge.DoublePoint"/>.
</summary>
<param name="point">Integer point to convert to double precision point.</param>
<returns>Returns new double precision point which coordinates are implicitly converted
to doubles from coordinates of the specified integer point.</returns>
</member>
<member name="M:AForge.IntPoint.ToString">
<summary>
Get string representation of the class.
</summary>
<returns>Returns string, which contains values of the point in readable form.</returns>
</member>
<member name="M:AForge.IntPoint.EuclideanNorm">
<summary>
Calculate Euclidean norm of the vector comprised of the point's
coordinates - distance from (0, 0) in other words.
</summary>
<returns>Returns point's distance from (0, 0) point.</returns>
</member>
<member name="T:AForge.PolishExpression">
<summary>
Evaluator of expressions written in reverse polish notation.
</summary>
<remarks><para>The class evaluates expressions writen in reverse postfix polish notation.</para>
<para>The list of supported functuins is:</para>
<list type="bullet">
<item><b>Arithmetic functions</b>: +, -, *, /;</item>
<item><b>sin</b> - sine;</item>
<item><b>cos</b> - cosine;</item>
<item><b>ln</b> - natural logarithm;</item>
<item><b>exp</b> - exponent;</item>
<item><b>sqrt</b> - square root.</item>
</list>
<para>Arguments for these functions could be as usual constants, written as numbers, as variables,
writen as $&lt;var_number&gt; (<b>$2</b>, for example). The variable number is zero based index
of variables array.</para>
<para>Sample usage:</para>
<code>
// expression written in polish notation
string expression = "2 $0 / 3 $1 * +";
// variables for the expression
double[] vars = new double[] { 3, 4 };
// expression evaluation
double result = PolishExpression.Evaluate( expression, vars );
</code>
</remarks>
</member>
<member name="M:AForge.PolishExpression.Evaluate(System.String,System.Double[])">
<summary>
Evaluates specified expression.
</summary>
<param name="expression">Expression written in postfix polish notation.</param>
<param name="variables">Variables for the expression.</param>
<returns>Evaluated value of the expression.</returns>
<exception cref="T:System.ArgumentException">Unsupported function is used in the expression.</exception>
<exception cref="T:System.ArgumentException">Incorrect postfix polish expression.</exception>
</member>
<member name="T:AForge.DoubleRange">
<summary>
Represents a double range with minimum and maximum values.
</summary>
<remarks>
<para>The class represents a double range with inclusive limits -
both minimum and maximum values of the range are included into it.
Mathematical notation of such range is <b>[min, max]</b>.</para>
<para>Sample usage:</para>
<code>
// create [0.25, 1.5] range
DoubleRange range1 = new DoubleRange( 0.25, 1.5 );
// create [1.00, 2.25] range
DoubleRange range2 = new DoubleRange( 1.00, 2.25 );
// check if values is inside of the first range
if ( range1.IsInside( 0.75 ) )
{
// ...
}
// check if the second range is inside of the first range
if ( range1.IsInside( range2 ) )
{
// ...
}
// check if two ranges overlap
if ( range1.IsOverlapping( range2 ) )
{
// ...
}
</code>
</remarks>
</member>
<member name="M:AForge.DoubleRange.#ctor(System.Double,System.Double)">
<summary>
Initializes a new instance of the <see cref="T:AForge.DoubleRange"/> class.
</summary>
<param name="min">Minimum value of the range.</param>
<param name="max">Maximum value of the range.</param>
</member>
<member name="M:AForge.DoubleRange.IsInside(System.Double)">
<summary>
Check if the specified value is inside of the range.
</summary>
<param name="x">Value to check.</param>
<returns><b>True</b> if the specified value is inside of the range or
<b>false</b> otherwise.</returns>
</member>
<member name="M:AForge.DoubleRange.IsInside(AForge.DoubleRange)">
<summary>
Check if the specified range is inside of the range.
</summary>
<param name="range">Range to check.</param>
<returns><b>True</b> if the specified range is inside of the range or
<b>false</b> otherwise.</returns>
</member>
<member name="M:AForge.DoubleRange.IsOverlapping(AForge.DoubleRange)">
<summary>
Check if the specified range overlaps with the range.
</summary>
<param name="range">Range to check for overlapping.</param>
<returns><b>True</b> if the specified range overlaps with the range or
<b>false</b> otherwise.</returns>
</member>
<member name="M:AForge.DoubleRange.ToIntRange(System.Boolean)">
<summary>
Convert the signle precision range to integer range.
</summary>
<param name="provideInnerRange">Specifies if inner integer range must be returned or outer range.</param>
<returns>Returns integer version of the range.</returns>
<remarks>If <paramref name="provideInnerRange"/> is set to <see langword="true"/>, then the
returned integer range will always fit inside of the current single precision range.
If it is set to <see langword="false"/>, then current single precision range will always
fit into the returned integer range.</remarks>
</member>
<member name="M:AForge.DoubleRange.op_Equality(AForge.DoubleRange,AForge.DoubleRange)">
<summary>
Equality operator - checks if two ranges have equal min/max values.
</summary>
<param name="range1">First range to check.</param>
<param name="range2">Second range to check.</param>
<returns>Returns <see langword="true"/> if min/max values of specified
ranges are equal.</returns>
</member>
<member name="M:AForge.DoubleRange.op_Inequality(AForge.DoubleRange,AForge.DoubleRange)">
<summary>
Inequality operator - checks if two ranges have different min/max values.
</summary>
<param name="range1">First range to check.</param>
<param name="range2">Second range to check.</param>
<returns>Returns <see langword="true"/> if min/max values of specified
ranges are not equal.</returns>
</member>
<member name="M:AForge.DoubleRange.Equals(System.Object)">
<summary>
Check if this instance of <see cref="T:AForge.Range"/> equal to the specified one.
</summary>
<param name="obj">Another range to check equalty to.</param>
<returns>Return <see langword="true"/> if objects are equal.</returns>
</member>
<member name="M:AForge.DoubleRange.GetHashCode">
<summary>
Get hash code for this instance.
</summary>
<returns>Returns the hash code for this instance.</returns>
</member>
<member name="M:AForge.DoubleRange.ToString">
<summary>
Get string representation of the class.
</summary>
<returns>Returns string, which contains min/max values of the range in readable form.</returns>
</member>
<member name="P:AForge.DoubleRange.Min">
<summary>
Minimum value of the range.
</summary>
<remarks><para>The property represents minimum value (left side limit) or the range -
[<b>min</b>, max].</para></remarks>
</member>
<member name="P:AForge.DoubleRange.Max">
<summary>
Maximum value of the range.
</summary>
<remarks><para>The property represents maximum value (right side limit) or the range -
[min, <b>max</b>].</para></remarks>
</member>
<member name="P:AForge.DoubleRange.Length">
<summary>
Length of the range (deffirence between maximum and minimum values).
</summary>
</member>
<member name="T:AForge.MessageTransferHandler">
<summary>
A delegate which is used by events notifying abount sent/received message.
</summary>
<param name="sender">Event sender.</param>
<param name="eventArgs">Event arguments containing details about the transferred message.</param>
</member>
<member name="T:AForge.Point">
<summary>
Structure for representing a pair of coordinates of float type.
</summary>
<remarks><para>The structure is used to store a pair of floating point
coordinates with single precision.</para>
<para>Sample usage:</para>
<code>
// assigning coordinates in the constructor
Point p1 = new Point( 10, 20 );
// creating a point and assigning coordinates later
Point p2;
p2.X = 30;
p2.Y = 40;
// calculating distance between two points
float distance = p1.DistanceTo( p2 );
</code>
</remarks>
</member>
<member name="F:AForge.Point.X">
<summary>
X coordinate.
</summary>
</member>
<member name="F:AForge.Point.Y">
<summary>
Y coordinate.
</summary>
</member>
<member name="M:AForge.Point.#ctor(System.Single,System.Single)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Point"/> structure.
</summary>
<param name="x">X axis coordinate.</param>
<param name="y">Y axis coordinate.</param>
</member>
<member name="M:AForge.Point.DistanceTo(AForge.Point)">
<summary>
Calculate Euclidean distance between two points.
</summary>
<param name="anotherPoint">Point to calculate distance to.</param>
<returns>Returns Euclidean distance between this point and
<paramref name="anotherPoint"/> points.</returns>
</member>
<member name="M:AForge.Point.SquaredDistanceTo(AForge.Point)">
<summary>
Calculate squared Euclidean distance between two points.
</summary>
<param name="anotherPoint">Point to calculate distance to.</param>
<returns>Returns squared Euclidean distance between this point and
<paramref name="anotherPoint"/> points.</returns>
</member>
<member name="M:AForge.Point.op_Addition(AForge.Point,AForge.Point)">
<summary>
Addition operator - adds values of two points.
</summary>
<param name="point1">First point for addition.</param>
<param name="point2">Second point for addition.</param>
<returns>Returns new point which coordinates equal to sum of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.Point.Add(AForge.Point,AForge.Point)">
<summary>
Addition operator - adds values of two points.
</summary>
<param name="point1">First point for addition.</param>
<param name="point2">Second point for addition.</param>
<returns>Returns new point which coordinates equal to sum of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.Point.op_Subtraction(AForge.Point,AForge.Point)">
<summary>
Subtraction operator - subtracts values of two points.
</summary>
<param name="point1">Point to subtract from.</param>
<param name="point2">Point to subtract.</param>
<returns>Returns new point which coordinates equal to difference of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.Point.Subtract(AForge.Point,AForge.Point)">
<summary>
Subtraction operator - subtracts values of two points.
</summary>
<param name="point1">Point to subtract from.</param>
<param name="point2">Point to subtract.</param>
<returns>Returns new point which coordinates equal to difference of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.Point.op_Addition(AForge.Point,System.Single)">
<summary>
Addition operator - adds scalar to the specified point.
</summary>
<param name="point">Point to increase coordinates of.</param>
<param name="valueToAdd">Value to add to coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point increased by specified value.</returns>
</member>
<member name="M:AForge.Point.Add(AForge.Point,System.Single)">
<summary>
Addition operator - adds scalar to the specified point.
</summary>
<param name="point">Point to increase coordinates of.</param>
<param name="valueToAdd">Value to add to coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point increased by specified value.</returns>
</member>
<member name="M:AForge.Point.op_Subtraction(AForge.Point,System.Single)">
<summary>
Subtraction operator - subtracts scalar from the specified point.
</summary>
<param name="point">Point to decrease coordinates of.</param>
<param name="valueToSubtract">Value to subtract from coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point decreased by specified value.</returns>
</member>
<member name="M:AForge.Point.Subtract(AForge.Point,System.Single)">
<summary>
Subtraction operator - subtracts scalar from the specified point.
</summary>
<param name="point">Point to decrease coordinates of.</param>
<param name="valueToSubtract">Value to subtract from coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point decreased by specified value.</returns>
</member>
<member name="M:AForge.Point.op_Multiply(AForge.Point,System.Single)">
<summary>
Multiplication operator - multiplies coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to multiply coordinates of.</param>
<param name="factor">Multiplication factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point multiplied by specified value.</returns>
</member>
<member name="M:AForge.Point.Multiply(AForge.Point,System.Single)">
<summary>
Multiplication operator - multiplies coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to multiply coordinates of.</param>
<param name="factor">Multiplication factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point multiplied by specified value.</returns>
</member>
<member name="M:AForge.Point.op_Division(AForge.Point,System.Single)">
<summary>
Division operator - divides coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to divide coordinates of.</param>
<param name="factor">Division factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point divided by specified value.</returns>
</member>
<member name="M:AForge.Point.Divide(AForge.Point,System.Single)">
<summary>
Division operator - divides coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to divide coordinates of.</param>
<param name="factor">Division factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point divided by specified value.</returns>
</member>
<member name="M:AForge.Point.op_Equality(AForge.Point,AForge.Point)">
<summary>
Equality operator - checks if two points have equal coordinates.
</summary>
<param name="point1">First point to check.</param>
<param name="point2">Second point to check.</param>
<returns>Returns <see langword="true"/> if coordinates of specified
points are equal.</returns>
</member>
<member name="M:AForge.Point.op_Inequality(AForge.Point,AForge.Point)">
<summary>
Inequality operator - checks if two points have different coordinates.
</summary>
<param name="point1">First point to check.</param>
<param name="point2">Second point to check.</param>
<returns>Returns <see langword="true"/> if coordinates of specified
points are not equal.</returns>
</member>
<member name="M:AForge.Point.Equals(System.Object)">
<summary>
Check if this instance of <see cref="T:AForge.Point"/> equal to the specified one.
</summary>
<param name="obj">Another point to check equalty to.</param>
<returns>Return <see langword="true"/> if objects are equal.</returns>
</member>
<member name="M:AForge.Point.GetHashCode">
<summary>
Get hash code for this instance.
</summary>
<returns>Returns the hash code for this instance.</returns>
</member>
<member name="M:AForge.Point.op_Explicit(AForge.Point)~AForge.IntPoint">
<summary>
Explicit conversion to <see cref="T:AForge.IntPoint"/>.
</summary>
<param name="point">Single precision point to convert to integer point.</param>
<returns>Returns new integer point which coordinates are explicitly converted
to integers from coordinates of the specified single precision point by
casting float values to integers value.</returns>
</member>
<member name="M:AForge.Point.op_Implicit(AForge.Point)~AForge.DoublePoint">
<summary>
Implicit conversion to <see cref="T:AForge.DoublePoint"/>.
</summary>
<param name="point">Single precision point to convert to double precision point.</param>
<returns>Returns new double precision point which coordinates are implicitly converted
to doubles from coordinates of the specified single precision point.</returns>
</member>
<member name="M:AForge.Point.Round">
<summary>
Rounds the single precision point.
</summary>
<returns>Returns new integer point, which coordinates equal to whole numbers
nearest to the corresponding coordinates of the single precision point.</returns>
</member>
<member name="M:AForge.Point.ToString">
<summary>
Get string representation of the class.
</summary>
<returns>Returns string, which contains values of the point in readable form.</returns>
</member>
<member name="M:AForge.Point.EuclideanNorm">
<summary>
Calculate Euclidean norm of the vector comprised of the point's
coordinates - distance from (0, 0) in other words.
</summary>
<returns>Returns point's distance from (0, 0) point.</returns>
</member>
<member name="T:AForge.IntRange">
<summary>
Represents an integer range with minimum and maximum values.
</summary>
<remarks>
<para>The class represents an integer range with inclusive limits -
both minimum and maximum values of the range are included into it.
Mathematical notation of such range is <b>[min, max]</b>.</para>
<para>Sample usage:</para>
<code>
// create [1, 10] range
IntRange range1 = new IntRange( 1, 10 );
// create [5, 15] range
IntRange range2 = new IntRange( 5, 15 );
// check if values is inside of the first range
if ( range1.IsInside( 7 ) )
{
// ...
}
// check if the second range is inside of the first range
if ( range1.IsInside( range2 ) )
{
// ...
}
// check if two ranges overlap
if ( range1.IsOverlapping( range2 ) )
{
// ...
}
</code>
</remarks>
</member>
<member name="M:AForge.IntRange.#ctor(System.Int32,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:AForge.IntRange"/> structure.
</summary>
<param name="min">Minimum value of the range.</param>
<param name="max">Maximum value of the range.</param>
</member>
<member name="M:AForge.IntRange.IsInside(System.Int32)">
<summary>
Check if the specified value is inside of the range.
</summary>
<param name="x">Value to check.</param>
<returns><b>True</b> if the specified value is inside of the range or
<b>false</b> otherwise.</returns>
</member>
<member name="M:AForge.IntRange.IsInside(AForge.IntRange)">
<summary>
Check if the specified range is inside of the range.
</summary>
<param name="range">Range to check.</param>
<returns><b>True</b> if the specified range is inside of the range or
<b>false</b> otherwise.</returns>
</member>
<member name="M:AForge.IntRange.IsOverlapping(AForge.IntRange)">
<summary>
Check if the specified range overlaps with the range.
</summary>
<param name="range">Range to check for overlapping.</param>
<returns><b>True</b> if the specified range overlaps with the range or
<b>false</b> otherwise.</returns>
</member>
<member name="M:AForge.IntRange.op_Implicit(AForge.IntRange)~AForge.Range">
<summary>
Implicit conversion to <see cref="T:AForge.Range"/>.
</summary>
<param name="range">Integer range to convert to single precision range.</param>
<returns>Returns new single precision range which min/max values are implicitly converted
to floats from min/max values of the specified integer range.</returns>
</member>
<member name="M:AForge.IntRange.op_Equality(AForge.IntRange,AForge.IntRange)">
<summary>
Equality operator - checks if two ranges have equal min/max values.
</summary>
<param name="range1">First range to check.</param>
<param name="range2">Second range to check.</param>
<returns>Returns <see langword="true"/> if min/max values of specified
ranges are equal.</returns>
</member>
<member name="M:AForge.IntRange.op_Inequality(AForge.IntRange,AForge.IntRange)">
<summary>
Inequality operator - checks if two ranges have different min/max values.
</summary>
<param name="range1">First range to check.</param>
<param name="range2">Second range to check.</param>
<returns>Returns <see langword="true"/> if min/max values of specified
ranges are not equal.</returns>
</member>
<member name="M:AForge.IntRange.Equals(System.Object)">
<summary>
Check if this instance of <see cref="T:AForge.Range"/> equal to the specified one.
</summary>
<param name="obj">Another range to check equalty to.</param>
<returns>Return <see langword="true"/> if objects are equal.</returns>
</member>
<member name="M:AForge.IntRange.GetHashCode">
<summary>
Get hash code for this instance.
</summary>
<returns>Returns the hash code for this instance.</returns>
</member>
<member name="M:AForge.IntRange.ToString">
<summary>
Get string representation of the class.
</summary>
<returns>Returns string, which contains min/max values of the range in readable form.</returns>
</member>
<member name="P:AForge.IntRange.Min">
<summary>
Minimum value of the range.
</summary>
<remarks><para>The property represents minimum value (left side limit) or the range -
[<b>min</b>, max].</para></remarks>
</member>
<member name="P:AForge.IntRange.Max">
<summary>
Maximum value of the range.
</summary>
<remarks><para>The property represents maximum value (right side limit) or the range -
[min, <b>max</b>].</para></remarks>
</member>
<member name="P:AForge.IntRange.Length">
<summary>
Length of the range (deffirence between maximum and minimum values).
</summary>
</member>
<member name="T:AForge.ThreadSafeRandom">
<summary>
Thread safe version of the <see cref="T:System.Random"/> class.
</summary>
<remarks><para>The class inherits the <see cref="T:System.Random"/> and overrides
its random numbers generation methods providing thread safety by guarding call
to the base class with a lock. See documentation to <see cref="T:System.Random"/> for
additional information about the base class.</para></remarks>
</member>
<member name="M:AForge.ThreadSafeRandom.#ctor">
<summary>
Initializes a new instance of the <see cref="T:AForge.ThreadSafeRandom"/> class.
</summary>
<remarks>See <see cref="M:System.Random.Next"/> for more information.</remarks>
</member>
<member name="M:AForge.ThreadSafeRandom.#ctor(System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:AForge.ThreadSafeRandom"/> class.
</summary>
<remarks>A number used to calculate a starting value for the pseudo-random number sequence.
If a negative number is specified, the absolute value of the number is used.</remarks>
<remarks>See <see cref="M:System.Random.Next"/> for more information.</remarks>
</member>
<member name="M:AForge.ThreadSafeRandom.Next">
<summary>
Returns a nonnegative random number.
</summary>
<returns>Returns a 32-bit signed integer greater than or equal to zero and less than
<see cref="F:System.Int32.MaxValue"/>.</returns>
<remarks>See <see cref="M:System.Random.Next"/> for more information.</remarks>
</member>
<member name="M:AForge.ThreadSafeRandom.Next(System.Int32)">
<summary>
Returns a nonnegative random number less than the specified maximum.
</summary>
<param name="maxValue">The exclusive upper bound of the random number to be generated.
<paramref name="maxValue"/> must be greater than or equal to zero.</param>
<returns>Returns a 32-bit signed integer greater than or equal to zero, and less than <paramref name="maxValue"/>;
that is, the range of return values ordinarily includes zero but not <paramref name="maxValue"/>.</returns>
<remarks>See <see cref="M:System.Random.Next(System.Int32)"/> for more information.</remarks>
</member>
<member name="M:AForge.ThreadSafeRandom.Next(System.Int32,System.Int32)">
<summary>
Returns a random number within a specified range.
</summary>
<param name="minValue">The inclusive lower bound of the random number returned.</param>
<param name="maxValue">The exclusive upper bound of the random number returned.
<paramref name="maxValue"/> must be greater than or equal to <paramref name="minValue"/>.</param>
<returns>Returns a 32-bit signed integer greater than or equal to <paramref name="minValue"/> and less
than <paramref name="maxValue"/>; that is, the range of return values includes
<paramref name="minValue"/> but not <paramref name="maxValue"/>.</returns>
<remarks>See <see cref="M:System.Random.Next(System.Int32,System.Int32)"/> for more information.</remarks>
</member>
<member name="M:AForge.ThreadSafeRandom.NextBytes(System.Byte[])">
<summary>
Fills the elements of a specified array of bytes with random numbers.
</summary>
<param name="buffer">An array of bytes to contain random numbers.</param>
<remarks>See <see cref="M:System.Random.NextBytes(System.Byte[])"/> for more information.</remarks>
</member>
<member name="M:AForge.ThreadSafeRandom.NextDouble">
<summary>
Returns a random number between 0.0 and 1.0.
</summary>
<returns>Returns a double-precision floating point number greater than or equal to 0.0, and less than 1.0.</returns>
<remarks>See <see cref="M:System.Random.NextDouble"/> for more information.</remarks>
</member>
<member name="T:AForge.Range">
<summary>
Represents a range with minimum and maximum values, which are single precision numbers (floats).
</summary>
<remarks>
<para>The class represents a single precision range with inclusive limits -
both minimum and maximum values of the range are included into it.
Mathematical notation of such range is <b>[min, max]</b>.</para>
<para>Sample usage:</para>
<code>
// create [0.25, 1.5] range
Range range1 = new Range( 0.25f, 1.5f );
// create [1.00, 2.25] range
Range range2 = new Range( 1.00f, 2.25f );
// check if values is inside of the first range
if ( range1.IsInside( 0.75f ) )
{
// ...
}
// check if the second range is inside of the first range
if ( range1.IsInside( range2 ) )
{
// ...
}
// check if two ranges overlap
if ( range1.IsOverlapping( range2 ) )
{
// ...
}
</code>
</remarks>
</member>
<member name="M:AForge.Range.#ctor(System.Single,System.Single)">
<summary>
Initializes a new instance of the <see cref="T:AForge.Range"/> structure.
</summary>
<param name="min">Minimum value of the range.</param>
<param name="max">Maximum value of the range.</param>
</member>
<member name="M:AForge.Range.IsInside(System.Single)">
<summary>
Check if the specified value is inside of the range.
</summary>
<param name="x">Value to check.</param>
<returns><b>True</b> if the specified value is inside of the range or
<b>false</b> otherwise.</returns>
</member>
<member name="M:AForge.Range.IsInside(AForge.Range)">
<summary>
Check if the specified range is inside of the range.
</summary>
<param name="range">Range to check.</param>
<returns><b>True</b> if the specified range is inside of the range or
<b>false</b> otherwise.</returns>
</member>
<member name="M:AForge.Range.IsOverlapping(AForge.Range)">
<summary>
Check if the specified range overlaps with the range.
</summary>
<param name="range">Range to check for overlapping.</param>
<returns><b>True</b> if the specified range overlaps with the range or
<b>false</b> otherwise.</returns>
</member>
<member name="M:AForge.Range.ToIntRange(System.Boolean)">
<summary>
Convert the signle precision range to integer range.
</summary>
<param name="provideInnerRange">Specifies if inner integer range must be returned or outer range.</param>
<returns>Returns integer version of the range.</returns>
<remarks>If <paramref name="provideInnerRange"/> is set to <see langword="true"/>, then the
returned integer range will always fit inside of the current single precision range.
If it is set to <see langword="false"/>, then current single precision range will always
fit into the returned integer range.</remarks>
</member>
<member name="M:AForge.Range.op_Equality(AForge.Range,AForge.Range)">
<summary>
Equality operator - checks if two ranges have equal min/max values.
</summary>
<param name="range1">First range to check.</param>
<param name="range2">Second range to check.</param>
<returns>Returns <see langword="true"/> if min/max values of specified
ranges are equal.</returns>
</member>
<member name="M:AForge.Range.op_Inequality(AForge.Range,AForge.Range)">
<summary>
Inequality operator - checks if two ranges have different min/max values.
</summary>
<param name="range1">First range to check.</param>
<param name="range2">Second range to check.</param>
<returns>Returns <see langword="true"/> if min/max values of specified
ranges are not equal.</returns>
</member>
<member name="M:AForge.Range.Equals(System.Object)">
<summary>
Check if this instance of <see cref="T:AForge.Range"/> equal to the specified one.
</summary>
<param name="obj">Another range to check equalty to.</param>
<returns>Return <see langword="true"/> if objects are equal.</returns>
</member>
<member name="M:AForge.Range.GetHashCode">
<summary>
Get hash code for this instance.
</summary>
<returns>Returns the hash code for this instance.</returns>
</member>
<member name="M:AForge.Range.ToString">
<summary>
Get string representation of the class.
</summary>
<returns>Returns string, which contains min/max values of the range in readable form.</returns>
</member>
<member name="P:AForge.Range.Min">
<summary>
Minimum value of the range.
</summary>
<remarks><para>The property represents minimum value (left side limit) or the range -
[<b>min</b>, max].</para></remarks>
</member>
<member name="P:AForge.Range.Max">
<summary>
Maximum value of the range.
</summary>
<remarks><para>The property represents maximum value (right side limit) or the range -
[min, <b>max</b>].</para></remarks>
</member>
<member name="P:AForge.Range.Length">
<summary>
Length of the range (deffirence between maximum and minimum values).
</summary>
</member>
<member name="T:AForge.Parallel">
<summary>
The class provides support for parallel computations, paralleling loop's iterations.
</summary>
<remarks><para>The class allows to parallel loop's iteration computing them in separate threads,
what allows their simultaneous execution on multiple CPUs/cores.
</para></remarks>
</member>
<member name="M:AForge.Parallel.For(System.Int32,System.Int32,AForge.Parallel.ForLoopBody)">
<summary>
Executes a for-loop in which iterations may run in parallel.
</summary>
<param name="start">Loop's start index.</param>
<param name="stop">Loop's stop index.</param>
<param name="loopBody">Loop's body.</param>
<remarks><para>The method is used to parallel for-loop running its iterations in
different threads. The <b>start</b> and <b>stop</b> parameters define loop's
starting and ending loop's indexes. The number of iterations is equal to <b>stop - start</b>.
</para>
<para>Sample usage:</para>
<code>
Parallel.For( 0, 20, delegate( int i )
// which is equivalent to
// for ( int i = 0; i &lt; 20; i++ )
{
System.Diagnostics.Debug.WriteLine( "Iteration: " + i );
// ...
} );
</code>
</remarks>
</member>
<member name="P:AForge.Parallel.ThreadsCount">
<summary>
Number of threads used for parallel computations.
</summary>
<remarks><para>The property sets how many worker threads are created for paralleling
loops' computations.</para>
<para>By default the property is set to number of CPU's in the system
(see <see cref="P:System.Environment.ProcessorCount"/>).</para>
</remarks>
</member>
<member name="T:AForge.Parallel.ForLoopBody">
<summary>
Delegate defining for-loop's body.
</summary>
<param name="index">Loop's index.</param>
</member>
<member name="T:AForge.SystemTools">
<summary>
Set of systems tools.
</summary>
<remarks><para>The class is a container of different system tools, which are used
across the framework. Some of these tools are platform specific, so their
implementation is different on different platform, like .NET and Mono.</para>
</remarks>
</member>
<member name="M:AForge.SystemTools.CopyUnmanagedMemory(System.IntPtr,System.IntPtr,System.Int32)">
<summary>
Copy block of unmanaged memory.
</summary>
<param name="dst">Destination pointer.</param>
<param name="src">Source pointer.</param>
<param name="count">Memory block's length to copy.</param>
<returns>Return's value of <paramref name="dst"/> - pointer to destination.</returns>
<remarks><para>This function is required because of the fact that .NET does
not provide any way to copy unmanaged blocks, but provides only methods to
copy from unmanaged memory to managed memory and vise versa.</para></remarks>
</member>
<member name="M:AForge.SystemTools.CopyUnmanagedMemory(System.Byte*,System.Byte*,System.Int32)">
<summary>
Copy block of unmanaged memory.
</summary>
<param name="dst">Destination pointer.</param>
<param name="src">Source pointer.</param>
<param name="count">Memory block's length to copy.</param>
<returns>Return's value of <paramref name="dst"/> - pointer to destination.</returns>
<remarks><para>This function is required because of the fact that .NET does
not provide any way to copy unmanaged blocks, but provides only methods to
copy from unmanaged memory to managed memory and vise versa.</para></remarks>
</member>
<member name="M:AForge.SystemTools.SetUnmanagedMemory(System.IntPtr,System.Int32,System.Int32)">
<summary>
Fill memory region with specified value.
</summary>
<param name="dst">Destination pointer.</param>
<param name="filler">Filler byte's value.</param>
<param name="count">Memory block's length to fill.</param>
<returns>Return's value of <paramref name="dst"/> - pointer to destination.</returns>
</member>
<member name="M:AForge.SystemTools.SetUnmanagedMemory(System.Byte*,System.Int32,System.Int32)">
<summary>
Fill memory region with specified value.
</summary>
<param name="dst">Destination pointer.</param>
<param name="filler">Filler byte's value.</param>
<param name="count">Memory block's length to fill.</param>
<returns>Return's value of <paramref name="dst"/> - pointer to destination.</returns>
</member>
<member name="T:AForge.ConnectionFailedException">
<summary>
Connection failed exception.
</summary>
<remarks><para>The exception is thrown in the case if connection to device
has failed.</para>
</remarks>
</member>
<member name="M:AForge.ConnectionFailedException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:AForge.ConnectionFailedException"/> class.
</summary>
<param name="message">Exception's message.</param>
</member>
<member name="T:AForge.ConnectionLostException">
<summary>
Connection lost exception.
</summary>
<remarks><para>The exception is thrown in the case if connection to device
is lost. When the exception is caught, user may need to reconnect to the device.</para>
</remarks>
</member>
<member name="M:AForge.ConnectionLostException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:AForge.ConnectionLostException"/> class.
</summary>
<param name="message">Exception's message.</param>
</member>
<member name="T:AForge.NotConnectedException">
<summary>
Not connected exception.
</summary>
<remarks><para>The exception is thrown in the case if connection to device
is not established, but user requests for its services.</para>
</remarks>
</member>
<member name="M:AForge.NotConnectedException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:AForge.NotConnectedException"/> class.
</summary>
<param name="message">Exception's message.</param>
</member>
<member name="T:AForge.DeviceBusyException">
<summary>
Device busy exception.
</summary>
<remarks><para>The exception is thrown in the case if access to certain device
is not available due to the fact that it is currently busy handling other request/connection.</para>
</remarks>
</member>
<member name="M:AForge.DeviceBusyException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:AForge.DeviceBusyException"/> class.
</summary>
<param name="message">Exception's message.</param>
</member>
<member name="T:AForge.DeviceErrorException">
<summary>
Device error exception.
</summary>
<remarks><para>The exception is thrown in the case if some error happens with a device, which
may need to be reported to user.</para></remarks>
</member>
<member name="M:AForge.DeviceErrorException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:AForge.DeviceErrorException"/> class.
</summary>
<param name="message">Exception's message.</param>
</member>
<member name="T:AForge.DoublePoint">
<summary>
Structure for representing a pair of coordinates of double type.
</summary>
<remarks><para>The structure is used to store a pair of floating point
coordinates with double precision.</para>
<para>Sample usage:</para>
<code>
// assigning coordinates in the constructor
DoublePoint p1 = new DoublePoint( 10, 20 );
// creating a point and assigning coordinates later
DoublePoint p2;
p2.X = 30;
p2.Y = 40;
// calculating distance between two points
double distance = p1.DistanceTo( p2 );
</code>
</remarks>
</member>
<member name="F:AForge.DoublePoint.X">
<summary>
X coordinate.
</summary>
</member>
<member name="F:AForge.DoublePoint.Y">
<summary>
Y coordinate.
</summary>
</member>
<member name="M:AForge.DoublePoint.#ctor(System.Double,System.Double)">
<summary>
Initializes a new instance of the <see cref="T:AForge.DoublePoint"/> structure.
</summary>
<param name="x">X axis coordinate.</param>
<param name="y">Y axis coordinate.</param>
</member>
<member name="M:AForge.DoublePoint.DistanceTo(AForge.DoublePoint)">
<summary>
Calculate Euclidean distance between two points.
</summary>
<param name="anotherPoint">Point to calculate distance to.</param>
<returns>Returns Euclidean distance between this point and
<paramref name="anotherPoint"/> points.</returns>
</member>
<member name="M:AForge.DoublePoint.SquaredDistanceTo(AForge.DoublePoint)">
<summary>
Calculate squared Euclidean distance between two points.
</summary>
<param name="anotherPoint">Point to calculate distance to.</param>
<returns>Returns squared Euclidean distance between this point and
<paramref name="anotherPoint"/> points.</returns>
</member>
<member name="M:AForge.DoublePoint.op_Addition(AForge.DoublePoint,AForge.DoublePoint)">
<summary>
Addition operator - adds values of two points.
</summary>
<param name="point1">First point for addition.</param>
<param name="point2">Second point for addition.</param>
<returns>Returns new point which coordinates equal to sum of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.DoublePoint.Add(AForge.DoublePoint,AForge.DoublePoint)">
<summary>
Addition operator - adds values of two points.
</summary>
<param name="point1">First point for addition.</param>
<param name="point2">Second point for addition.</param>
<returns>Returns new point which coordinates equal to sum of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.DoublePoint.op_Subtraction(AForge.DoublePoint,AForge.DoublePoint)">
<summary>
Subtraction operator - subtracts values of two points.
</summary>
<param name="point1">Point to subtract from.</param>
<param name="point2">Point to subtract.</param>
<returns>Returns new point which coordinates equal to difference of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.DoublePoint.Subtract(AForge.DoublePoint,AForge.DoublePoint)">
<summary>
Subtraction operator - subtracts values of two points.
</summary>
<param name="point1">Point to subtract from.</param>
<param name="point2">Point to subtract.</param>
<returns>Returns new point which coordinates equal to difference of corresponding
coordinates of specified points.</returns>
</member>
<member name="M:AForge.DoublePoint.op_Addition(AForge.DoublePoint,System.Double)">
<summary>
Addition operator - adds scalar to the specified point.
</summary>
<param name="point">Point to increase coordinates of.</param>
<param name="valueToAdd">Value to add to coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point increased by specified value.</returns>
</member>
<member name="M:AForge.DoublePoint.Add(AForge.DoublePoint,System.Double)">
<summary>
Addition operator - adds scalar to the specified point.
</summary>
<param name="point">Point to increase coordinates of.</param>
<param name="valueToAdd">Value to add to coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point increased by specified value.</returns>
</member>
<member name="M:AForge.DoublePoint.op_Subtraction(AForge.DoublePoint,System.Double)">
<summary>
Subtraction operator - subtracts scalar from the specified point.
</summary>
<param name="point">Point to decrease coordinates of.</param>
<param name="valueToSubtract">Value to subtract from coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point decreased by specified value.</returns>
</member>
<member name="M:AForge.DoublePoint.Subtract(AForge.DoublePoint,System.Double)">
<summary>
Subtraction operator - subtracts scalar from the specified point.
</summary>
<param name="point">Point to decrease coordinates of.</param>
<param name="valueToSubtract">Value to subtract from coordinates of the specified point.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point decreased by specified value.</returns>
</member>
<member name="M:AForge.DoublePoint.op_Multiply(AForge.DoublePoint,System.Double)">
<summary>
Multiplication operator - multiplies coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to multiply coordinates of.</param>
<param name="factor">Multiplication factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point multiplied by specified value.</returns>
</member>
<member name="M:AForge.DoublePoint.Multiply(AForge.DoublePoint,System.Double)">
<summary>
Multiplication operator - multiplies coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to multiply coordinates of.</param>
<param name="factor">Multiplication factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point multiplied by specified value.</returns>
</member>
<member name="M:AForge.DoublePoint.op_Division(AForge.DoublePoint,System.Double)">
<summary>
Division operator - divides coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to divide coordinates of.</param>
<param name="factor">Division factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point divided by specified value.</returns>
</member>
<member name="M:AForge.DoublePoint.Divide(AForge.DoublePoint,System.Double)">
<summary>
Division operator - divides coordinates of the specified point by scalar value.
</summary>
<param name="point">Point to divide coordinates of.</param>
<param name="factor">Division factor.</param>
<returns>Returns new point which coordinates equal to coordinates of
the specified point divided by specified value.</returns>
</member>
<member name="M:AForge.DoublePoint.op_Equality(AForge.DoublePoint,AForge.DoublePoint)">
<summary>
Equality operator - checks if two points have equal coordinates.
</summary>
<param name="point1">First point to check.</param>
<param name="point2">Second point to check.</param>
<returns>Returns <see langword="true"/> if coordinates of specified
points are equal.</returns>
</member>
<member name="M:AForge.DoublePoint.op_Inequality(AForge.DoublePoint,AForge.DoublePoint)">
<summary>
Inequality operator - checks if two points have different coordinates.
</summary>
<param name="point1">First point to check.</param>
<param name="point2">Second point to check.</param>
<returns>Returns <see langword="true"/> if coordinates of specified
points are not equal.</returns>
</member>
<member name="M:AForge.DoublePoint.Equals(System.Object)">
<summary>
Check if this instance of <see cref="T:AForge.DoublePoint"/> equal to the specified one.
</summary>
<param name="obj">Another point to check equalty to.</param>
<returns>Return <see langword="true"/> if objects are equal.</returns>
</member>
<member name="M:AForge.DoublePoint.GetHashCode">
<summary>
Get hash code for this instance.
</summary>
<returns>Returns the hash code for this instance.</returns>
</member>
<member name="M:AForge.DoublePoint.op_Explicit(AForge.DoublePoint)~AForge.IntPoint">
<summary>
Explicit conversion to <see cref="T:AForge.IntPoint"/>.
</summary>
<param name="point">Double precision point to convert to integer point.</param>
<returns>Returns new integer point which coordinates are explicitly converted
to integers from coordinates of the specified double precision point by
casting double values to integers value.</returns>
</member>
<member name="M:AForge.DoublePoint.op_Explicit(AForge.DoublePoint)~AForge.Point">
<summary>
Explicit conversion to <see cref="T:AForge.Point"/>.
</summary>
<param name="point">Double precision point to convert to single precision point.</param>
<returns>Returns new single precision point which coordinates are explicitly converted
to floats from coordinates of the specified double precision point by
casting double values to float value.</returns>
</member>
<member name="M:AForge.DoublePoint.Round">
<summary>
Rounds the double precision point.
</summary>
<returns>Returns new integer point, which coordinates equal to whole numbers
nearest to the corresponding coordinates of the double precision point.</returns>
</member>
<member name="M:AForge.DoublePoint.ToString">
<summary>
Get string representation of the class.
</summary>
<returns>Returns string, which contains values of the point in readable form.</returns>
</member>
<member name="M:AForge.DoublePoint.EuclideanNorm">
<summary>
Calculate Euclidean norm of the vector comprised of the point's
coordinates - distance from (0, 0) in other words.
</summary>
<returns>Returns point's distance from (0, 0) point.</returns>
</member>
</members>
</doc>
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!