Laden...

GDI: nur auf Bildschirm zwei zeichnen, an der richtigen Position

Erstellt von schorge vor 9 Jahren Letzter Beitrag vor 9 Jahren 853 Views
S
schorge Themenstarter:in
129 Beiträge seit 2014
vor 9 Jahren
GDI: nur auf Bildschirm zwei zeichnen, an der richtigen Position

Moin,

also ich habe 2 Forms -
beim Main - Form klicke ich in einem Explorer auf ein Bild,
welches dann in einem Subform auf dem Sekundär-Bildschirm ohne
Border und Bounds on Secondary Screen ist.

In dem Subform wird das jeweils angeklickte Bild in einer PictureBox angezeigt,
funzt alles wie gewollt. Jetzt will ich auf der PcitureBox Zeichnen,
aber ich bekomme Probleme, das er mir den PrimaryScreen
dazunimmt und dann zeichnet er neben der Maus.... 🤔

Hier mein Code:

 private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            lastPoint = e.Location; // der letzte mauspunkt ist der punkt uaf der picturebox
            isMouseDown = true; // maus klickt
        }

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown == true)
            {
                if (lastPoint != null)
                {
                    if (pictureBox1.Image != null)
                    {

                    }
                    using (Graphics g = Graphics.FromImage(pictureBox1.Image))
                    {
                        g.DrawLine(new Pen(Color.Red, 5), lastPoint, e.Location);
                        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                    }
                    pictureBox1.Invalidate();
                    lastPoint = e.Location;
                }
            }
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            isMouseDown = false;
            lastPoint = Point.Empty;
        }

Muss ich den Screen Eigenschaft des SecondaryScreen irgendwie ändern?

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo schorge,

du zeichnest in das Bild. Wenn dasselbe Bild auch auf dem ersten Schirm dargestellt wird, wird es - nach einem Invalidate - auch dort geändert angezeigt. Das sollte klar sein.

Als Koordinaten verwendest du die Mauskoordinaten relativ zur PictureBox. Je nach eingestelltem PictureBoxSizeMode stimmen diese nicht mit dem Koordinaten im Bild überein.

Du könntest auf die PictureBox zeichnen (das müsstest du dann allerdings im OnPaint/Paint machen), dann stimmen die Koordinaten und dann wird auch nur die gewünschte PictureBox geändert. In [Artikel] Zeichnen in Windows-Programmen steht, wie man im OnPaint/Paint zeichnet.

herbivore