2021-01-06 14:53:33 +08:00

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() { }
}
}