Probleme mit DrawLine



  • Hi,

    ich möchte per DrawLine eine Linie zeichnen. Allerdings kommte es dabei immer um einen Offset von einem Pixel. Zum besseren Verständinis hier ein Code Beispiel:

    graphics_data_image.DrawLine(penDraw, 60, 0, 60, 100);

    Zeichnet eine Linie bei der Koordinate 60 der PictureBox.

    int X = 60;
    graphics_data_image.DrawLine(penDraw, X, 0, X, 100)

    Zeichnet eine Linie bei der Koordinate 59 der PictureBox!

    Warum? bzw. wie kann ich das fixen?

    Bei der X Koordinate 0 werden beide Linien an die Position 0 gezeichnet...

    Danke für Euere Hilfe



  • beim besten willen kann ich das nicht nachvollziehen.

    erstelle ein neues Projekt. Lege eine PictureBox rauf und in MouseDown Event schreibe folgenden code rein:

    private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    	Graphics g = pictureBox1.CreateGraphics();
    	g.DrawLine(new Pen(Color.Red, 1), 60, 0, 60, 100);
    	int X = 60;
    	g.DrawLine(new Pen(Color.Green, 1), X, 101, X, 200);
    	g.Dispose();
    }
    

    wenn das immer noch auftritt, dann kannst du langsam beginen deinen rechner neu aufzusetzen. 😮



  • Hab grad einen Workaround gemacht, damit läufts:

    double c = 60 + 0.5;
    int cc = (int) c;

    graphics_data_image.DrawLine(penDraw, cc, 0, cc, 100);

    Jetzt liegen die Werte bei mir auch auf den richtigen Punkte..

    Strange finde ich das aber immernoch. (Woher weiß DrawLine dass cc mal aus einem double gekommen ist???)

    Vielleich liegt's daran, das ich nicht direkt in die PictureBox male sondern:

    m_data_bitmap = new Bitmap(m_data_picturebox.Width, m_data_picturebox.Height);
    Graphics graphics_data_image = Graphics.FromImage(m_data_bitmap);
    ...
    m_data_picturebox.Image = m_data_bitmap;

    Trotzdem danke für die Hilfe!


Log in to reply