Ich versuche (einfach) einige Linien zu zeichnen, die sich entlang eines Ellipsenpfades drehen, und dachte, ich hätte eine schöne, einfache Art und Weise, dies zu tun. Leider scheint meine Lösung einige Probleme zu haben:Warum erzeugt das Zeichnen einer Ellipse mit Pen :: DashPattern nicht das erwartete Ergebnis?
void EllipseDisplayControl::OnPaint(PaintEventArgs^ e)
{
Graphics^ gfx = e->Graphics;
gfx->SmoothingMode = Drawing2D::SmoothingMode::AntiAlias;
int width = 100;
int height = 10;
for(int i = 0; i < 15; i ++)
{
Drawing::Pen^ myPen = (Drawing::Pen^) Drawing::Pens::RoyalBlue->Clone(); //use the standard blue as a start point
myPen->Color = Drawing::Color::FromArgb(64, 32, 111, 144);
myPen->Width = 3;
myPen->DashStyle = Drawing::Drawing2D::DashStyle::Solid;
gfx->DrawEllipse(myPen, 0, 50+i*20, width, height); // Draw the blue ring
float ellipseCircumference = Math::PI * Math::Sqrt(2* (Math::Pow(0.5*width,2) + Math::Pow(0.5*height,2)));
array<Single>^ pattern = {4, ellipseCircumference};
Drawing::Pen^ myPen2 = (Drawing::Pen^) Drawing::Pens::White->Clone(); //use the standard blue as a start point
myPen2->DashPattern = pattern;
myPen2->DashOffset = i*10;
gfx->DrawEllipse(myPen2, 0, 50+i*20, width, height); // Draw the rotating white dot
}
}
... produziert:
http://www.joncage.co.uk/media/img/BadPattern.png
... also warum sind die beiden zweiten Ellipsen vollständig weiß? ... und wie kann ich das Problem vermeiden?
Typische GDI + Verlust. –