У меня есть собственный код эллипса, показанный ниже. Я рисую резиновую ленту, используя эллипс, устанавливая ширину и высоту, используя две точки, код показан ниже. Однако, когда я рисую эллипс, ограничивающая рамка обрезает края по бокам. Я решил эту проблему раньше, используя фактическую высоту и ширину, но это было в отдельном приложении. Когда я интегрировал его с частью рисования резинкой, фактическая высота и ширина больше не работают, по какой-то причине они не обновляются, когда я устанавливаю ширину и высоту. Вы знаете, как это исправить, чтобы края не обрезались.
namespace WpfApplication4
{
class Ellipse2 : Shape
{
EllipseGeometry ellipse;
public static readonly DependencyProperty TextBoxShapeProperty = DependencyProperty.Register("TextBoxShape", typeof(TextBoxShape), typeof(Ellipse2), new FrameworkPropertyMetadata(null));
public TextBoxShape TextBoxShape
{
get { return (TextBoxShape)GetValue(TextBoxShapeProperty); }
set { SetValue(TextBoxShapeProperty, value); }
}
public Ellipse2()
{
ellipse = new EllipseGeometry();
this.Fill = Brushes.Transparent;
this.Stroke = Brushes.Gray;
this.StrokeThickness = 3;
}
protected override Geometry DefiningGeometry
{
get
{
TranslateTransform t = new TranslateTransform(Width / 2, Height / 2);
ellipse.Transform = t;
ellipse.RadiusX = this.Width / 2;
ellipse.RadiusY = this.Height / 2;
return ellipse;
}
}
}
}
double width = Math.Abs(initMousePoint.X - currMousePoint.X);
double height = Math.Abs(initMousePoint.Y - currMousePoint.Y);
double left = Math.Min(initMousePoint.X, currMousePoint.X);
double top = Math.Min(initMousePoint.Y, currMousePoint.Y);
rubberBandShape.Width = width;
rubberBandShape.Height = height;
Canvas.SetTop(rubberBandShape, top);
Canvas.SetLeft(rubberBandShape, left);
Ellipse2
обрезаны края? Я попробовал, и, похоже, он не справляется с такими вещами, какMargin
и т. Д. В любом случае, попробуйте компенсироватьStrokeThickness
, напримерellipse.RadiusX = (this.Width / 2) - StrokeThickness / 2;
- person Fredrik Hedblad   schedule 31.08.2011ActualWidth
иActualHeight
, и у меня это сработало лучше, чемWidth
иHeight
. Не уверен, почему у вас возникла эта проблема - person Fredrik Hedblad   schedule 31.08.2011