2017-08-15 1 views
0

Ich programmiere ein Malprogramm.DrawLine Breite vs. Ellipse Breite

Wenn der Benutzer eine Linie zeichnet, verwende ich diesen Code, und es funktioniert wie erwartet.

Wenn jedoch der Benutzer einen einzelnen Punkt und keine Linie zeichnet, funktioniert DrawLine nicht. Daher verwende ich DrawEllipse.

Allerdings scheint die Breite/Höhe der gezeichneten Ellipse unvorhersehbar zu sein und ich kann einfach nicht die richtige Formel finden. Die Breite/Höhe des einzelnen Punkts sieht so aus, als wäre es 80% der Linienbreite.

Dies ist, was ich verwende

Using g As Graphics = Graphics.FromImage(_bmp) 
    modControls.GraphicsSetSmoothingMode(g) 
    Dim nRect As New Rectangle(X - (_sngThickness/8), Y - (_sngThickness/8), _sngThickness/4, _sngThickness/4) 
    g.DrawEllipse(_Pen, nRect) 
End Using 

Hat jemand scheint, was ich falsch mache?

Auch meine Ellipse ist nicht gefüllt, aber ich denke, das ist ein anderes Problem.

+1

'g.FillEllipse (...' – LarsTech

+0

@LarsTech, die bereits alle die gelöst seltsame Probleme. Können Sie Ihren Kommentar zur Antwort? – tmighty

+0

Ich kommentierte nur das "das ist ein anderes Problem. Ich bin mir nicht sicher, wie das Ihre Dimension Problem behoben. – LarsTech

Antwort

1

Per den Kommentar, den ich gemacht, versuchen Sie statt eines Stiftes auf einer Bürste wechseln und den FillEllipse Verfahren statt:

Using g As Graphics = Graphics.FromImage(_bmp) 
    modControls.GraphicsSetSmoothingMode(g) 
    Dim nRect As New Rectangle(X - (_sngThickness/2), Y - (_sngThickness/2), 
          _sngThickness, _sngThickness) 
    g.FillEllipse(_Brush, nRect) 
End Using 
+0

Bitte/2 anstelle von/8 und/1 anstelle von/4 verwenden. Das habe ich mit" seltsamen Problemen "gemeint. Ich habe nur/8 eingeführt, weil die uns Eine Annäherung von/2 würde nicht zu der richtigen Größe führen. – tmighty

Verwandte Themen