Hello,
I have two custom shapes. One contains the other. When I resize the principal in the diagram, I resize manually in the code the secundary. The problem is that I can not selected the principal shape if the size is little. If I don't resize de secundari, the resized works correctly.
The code of resize is:
"this" is the principal shape ( RadDiagramShape)
"wire" is the secundari shape ( RadDiagramShape)
private
void
PositionShape_SizeChanged(
object
sender, SizeChangedEventArgs e)
{
this
.Border = (OriginalStrokeThickness / Scale);
this
.OriginalWidth = e.NewSize.Width / Scale;
this
.OriginalHeight = e.NewSize.Height / Scale;
this
.OriginalPosition =
new
Point(
this
.Position.X / Scale,
this
.Position.Y / Scale);
if
(e.PreviousSize.Width != 0 && e.PreviousSize.Height != 0)
{
switch
(OrientaActual)
{
case
'N'
:
this
.Wire.WireHeight = (
this
.OriginalHeight * 2)*Scale;
this
.Wire.WireWidth =
this
.OriginalWidth*Scale;
this
.Wire.WirePosition =
new
Point(
this
.Position.X,
this
.Position.Y -
this
.Wire.Height);
break
;
case
'E'
:
this
.Wire.WireHeight = (
this
.OriginalHeight * 2)*Scale;
this
.Wire.WireWidth =
this
.OriginalWidth*Scale;
this
.Wire.WirePosition =
new
Point(
this
.Position.X +
this
.Height * 1.5,
this
.Position.Y -
this
.Height / 2);
break
;
case
'S'
:
this
.Wire.WireHeight = (
this
.OriginalHeight * 2)*Scale;
this
.Wire.WireWidth =
this
.OriginalWidth*Scale;
this
.Wire.WirePosition =
new
Point(
this
.Position.X, (
this
.Position.Y +
this
.Height));
break
;
case
'W'
:
this
.Wire.WireHeight = (
this
.OriginalHeight * 2)*Scale;
this
.Wire.WireWidth =
this
.OriginalWidth*Scale;
this
.Wire.WirePosition =
new
Point((
this
.Position.X -
this
.Width / 2) -
this
.Wire.Width,
this
.Position.Y-
this
.Height / 2);
break
;
}
}
}