NOTE: this question is not about using some premade libarys, so it's propably not a dublicate of Implementing a node-based graphical interface?
I'm trying to make a Node-Based-Interface like Autodesk 3DS MAX uses in the Material Editor :
so far i have some simple graphics ( .png ) for some nodes and i just finished the curved-line algorythm ( Cubic Bezier Curve )
All the logics, Classes and some other code are made 70 % till now, but i'm wondering what exactly would be the "right" way of implementing the Node Based Interface in a C# WinForm.
I've thought of using OpenGL or XNA ( Direct3D ), but then i thought that this would be a kind of too much for the purpose.
Next WPF came into my mind, but i've not worked with WPF for things like this anyway, so i've no idea if this would be makable and also nice in performance.
cuestions like, would i be able to drag around each nodes ? could i be able to register click and drag events with drawed graphics ?
I would like to be able to let the user create nodes, give them proppertys and values, connect the nodes and drag them arround in a scrolling area of the WinForm ( like in a container )
well, what are your suggestions ? where to begin ? what to do ? and maybe any examples or reference ?
EDIT:
here is an simple ( graphical ) example of the structure for the nodes i'm trying to make:
as you can see, i want to have buttons inside a node, or other user controled elements like switches or something like a dimmer. note that this image is only for showing how i want to structure the nodes and each "rectangle".
so each rectangle should have it's own propertys ( signal = true / false , connectedNode = "node_id" ) and also it's own mouse events, i want to group all there rectangles to an object that will represent a node.
so my question is: HOW can i draw the rectangles inside a Control Element like a "Panel" ? ( im best case i would like to use .png's for the main rectangle and for the connector-rectangles instead of drawing plain color recrangles )
UPDATE: what is with the system.drawing class ? can i simply draw into a "Panel" element ? and what is with the dragability ?