using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Mesnac.Controls.Intake.Base;
using System.Drawing.Design;
using System.IO;
namespace Mesnac.Controls.Intake
{
[ToolboxBitmap(typeof(AirStraightTube), "ICONS.StraightTube.bmp")]//新添加的代码
public partial class AirStraightTube : IntakeControl, ITube
{
#region 字段
private bool bNewPic = false;
protected Stream _imageStream; //图片资源流
Types _type;
Statuses _status;
string[,] sImages;
string _statusName;
///
/// 连接的下一个控件
///
#endregion
public AirStraightTube()
: base()
{
InitializeComponent();
Init();
ReloadStream();
Reload();
}
public enum Types
{
///
/// 空气横管
///
ptAirH = 0,
///
/// 空气竖管
///
ptAirV = 1,
///
/// 炭黑横管
///
ptCarbonH = 2,
///
/// 炭黑竖管
///
ptCarbonV=3
}
public enum Statuses
{
ptTurnOff = 0,
ptTurnOn = 1
}
#region 属性
public string StatusName
{
get
{
return _statusName;
}
set
{
_statusName = value;
}
}
public Statuses Status
{
get
{
return _status;
}
set
{
if (bFirstCreated == true)
{
bFirstCreated = false;
}
bool flag = false;
if (_status != value)
{
flag = true;
if (this.DesignMode == true)
{
bNewPic = true;
}
}
if ((int)value < 0)
{
_status = (Statuses)0;
}
else if ((int)value > 1)
{
_status = (Statuses)1;
}
else
{
_status = value;
}
if (flag)
{
ReloadStream();
//this.Refresh();
this.Reload();
}
}
}
public Types Type
{
get { return _type; }
set
{
if (bFirstCreated == true)
{
bFirstCreated = false;
}
if (_type != value)
{
if (this.DesignMode == true)
{
bNewPic = true;
}
}
Types _tmpType = _type;
_type = value;
//if ((_tmpType != Types.ptAirH && value == Types.ptCarbonH || _tmpType != Types.ptCarbonH && value == Types.ptAirH))
if ((_tmpType == Types.ptAirH || _tmpType == Types.ptCarbonH) && (value == Types.ptAirV || value == Types.ptCarbonV))
{
int i = this.Height;
this.Height = this.Width;
this.Width = i;
}
//if ((_tmpType != Types.ptAirV && value == Types.ptCarbonV || _tmpType != Types.ptCarbonV && value == Types.ptAirV))
if ((_tmpType == Types.ptAirV || _tmpType == Types.ptCarbonV) &&( value == Types.ptAirH || value == Types.ptCarbonH))
{
int i = this.Width;
this.Width = this.Height;
this.Height = i;
}
ReloadStream();
//this.Refresh();
this.Reload();
}
}
#endregion
protected override void Init()
{
base.Init();
_imageStream = null;
sImages = new string[4, 2];
sImages[0, 0] = "Mesnac.Controls.Intake.Resources.zg.airh.png";//
sImages[0, 1] = "Mesnac.Controls.Intake.Resources.zg.airh1.png";//
sImages[1, 0] = "Mesnac.Controls.Intake.Resources.zg.airv.png";//
sImages[1, 1] = "Mesnac.Controls.Intake.Resources.zg.airv1.png";//
sImages[2, 0] = "Mesnac.Controls.Intake.Resources.zg.carbonh.png";//
sImages[2, 1] = "Mesnac.Controls.Intake.Resources.zg.carbonh1.png";//
sImages[3, 0] = "Mesnac.Controls.Intake.Resources.zg.carbonv.png";//
sImages[3, 1] = "Mesnac.Controls.Intake.Resources.zg.carbonv1.png";//
_type = Types.ptCarbonH;
this._status = Statuses.ptTurnOff;
}
private void PipeLink_Load(object sender, EventArgs e)
{
if (bFirstCreated == true && this.DesignMode == true)
{
bFirstCreated = false;
Reload();
}
}
private void ReloadStream()
{
//CloseStream();
int ntype = (int)_type;
int nIndex = (int)_status;
_imageStream = _assembly.GetManifestResourceStream(sImages[ntype, nIndex]);
}
protected override void OnPaint(PaintEventArgs e)
{
if (_imageStream != null)
{
Graphics g = e.Graphics;
Image img = Image.FromStream(_imageStream);
if (bNewPic == true)
{
this.Size = img.Size;
bNewPic = false;
}
g.DrawImage(img, 0, 0, this.Width, this.Height);
}
}
private void Reload()
{
if (_imageStream != null)
{
Image img = Image.FromStream(_imageStream);
pictureBox1.Image = img;
pictureBox1.Refresh();
}
}
private void StraightTube_Resize(object sender, EventArgs e)
{
if (_type == Types.ptAirH || _type == Types.ptCarbonH)
{
this.Height = 5;
}
else if (_type == Types.ptAirV || _type == Types.ptCarbonV)
{
this.Width = 5;
}
}
}
}