53 lines
2.2 KiB
C#
Executable File
53 lines
2.2 KiB
C#
Executable File
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Drawing;
|
|
|
|
namespace ST.Library.UI.Demo_Image
|
|
{
|
|
public class STNodeImage : STNode
|
|
{
|
|
protected STNodeOption m_input_image; //输入输出点
|
|
protected STNodeOption m_out_image;
|
|
|
|
protected override void OnCreate() {
|
|
base.OnCreate();
|
|
m_input_image = new STNodeOption("", typeof(Image), true);
|
|
this.InputOptions.Add(m_input_image);
|
|
m_out_image = new STNodeOption("", typeof(Image), false);
|
|
this.OutputOptions.Add(m_out_image);
|
|
m_input_image.DataTransfer += new STNodeOptionEventHandler(m_input_image_DataTransfer);
|
|
this.Title = "Image";
|
|
}
|
|
//监听输入点接入事件
|
|
void m_input_image_DataTransfer(object sender, STNodeOptionEventArgs e) {
|
|
if (e.Status != ConnectionStatus.Connected)
|
|
m_input_image.Data = null;
|
|
else
|
|
m_input_image.Data = e.TargetOption.Data;
|
|
m_out_image.TransferData(m_input_image.Data); //输出节点向下投递数据
|
|
this.OnDataTransfer(); //通知子类
|
|
this.Invalidate(); //重绘自己
|
|
}
|
|
|
|
protected override System.Drawing.Size OnBuildNodeSize(DrawingTools dt) {
|
|
//return base.OnBuildNodeSize();
|
|
return new System.Drawing.Size(160, 120); //设定节点大小
|
|
}
|
|
|
|
protected override void OnDrawBody(DrawingTools dt) { //重绘节点主体部分
|
|
base.OnDrawBody(dt);
|
|
Graphics g = dt.Graphics;
|
|
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None;
|
|
if (m_input_image.Data != null) {
|
|
g.DrawImage((Image)m_input_image.Data, this.Left + 15, this.Top + 30, this.Width - 40, this.Height - 40);
|
|
} else {
|
|
g.FillRectangle(Brushes.Gray, this.Left + 15, this.Top + 30, this.Width - 40, this.Height - 40);
|
|
}
|
|
}
|
|
|
|
protected virtual void OnDataTransfer() { }
|
|
}
|
|
}
|