1. The node size should be irrelevant when the ImageAlign is set to Center (as it is in my code) or TopLeft (as it is in yours). The node size should matter only when the ImageAlign is set to Stretch or Fill. What's more, the size of the node is expressed in the current units of measure (which by default is Millimeters). Thus if you set 230x143 as the size of the node, it is interpreted as mm instead of pixels. As you can see in one of your images, the node is actually larger than the image displayed within. It looks like the node on the first image has its ImageAlign set to Stretch.
To make the size of the node match exactly the physical dimensions of the image, use the code below. The current unit of measure is taken into consideration.
PointF a = fc.ClientToDoc(new Point(0, 0));
PointF b = fc.ClientToDoc(new Point(node.Image.Width, node.Image.Height));
node.Bounds = new RectangleF(node.Bounds.X, node.Bounds.Y, b.X - a.X, b.Y - a.Y);
Note, that when the node and image sizes are the same, the image alignment will be irrelevant.
2. To position the text of the node more precisely, you can use a custom shape with defined text area. Text areas are specified in coordinates relative to the bounding rectangle of the node. Here is a text area which occupies the rectangle (Left: 10%, Top: 10%, Right: 50%, Bottom: 30%):
node.Shape = new Shape(
null,
null,
new ElementTemplate[]
{
new LineTemplate(10, 10, 50, 10),
new LineTemplate(50, 10, 50, 30),
new LineTemplate(50, 30, 10, 30),
new LineTemplate(10, 30, 10, 10),
},
System.Drawing.Drawing2D.FillMode.Winding, "myShape");
3. The background transparency getting lost between postbacks is related to the PNG encoder installed on the computer. A possible workaround would be to reassign the images after postback. You can also check this topic:
http://mindfusion.eu/Forum/YaBB.pl?board=fcnet_disc;action=display;num=116366417....
Regards,
Meppy