Bildbearbeitung

Radhad

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein Problem, bei dem ich einfach nicht weiter komme.

Ich möchte bei Bildern mit gedrückter linker Maustatse einen Rahmen ziehen, diesen Teil ausschneiden und als neues Bild darstellen. Allerdings scheitere ich schon beim Rahmen... Bei Google habe ich nicht das gefunden, was ich suche. Ich bin für jede Hilfe dankbar!

C#:
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            MouseOffset = new Point(-e.X, -e.Y);
            MousePos = new Point(e.X, e.Y);
        }

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                MouseRec = e.Location;

                pictureBox1.Invalidate();
            }
            if (e.Button == MouseButtons.Right)
            {
                IntPtr intPtr;
                if ((MouseOffset.Y + e.Y > -1))
                    intPtr = (IntPtr)SB_LINEUP;
                else
                    intPtr = (IntPtr)SB_LINEDOWN;

                SendMessage(panel1.Handle, WM_VSCROLL, intPtr, IntPtr.Zero);

                if ((MouseOffset.X + e.X > -1))
                    intPtr = (IntPtr)SB_LINEUP;
                else
                    intPtr = (IntPtr)SB_LINEDOWN;

                SendMessage(panel1.Handle, WM_HSCROLL, intPtr, IntPtr.Zero);
            }
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            Rectangle MyRectangle = new Rectangle();
            Graphics MyGraphics = Graphics.FromImage(MyImage);
            Pen MyPen = new Pen(Color.Black, 2);

            if ((MousePos.X - MouseRec.X) > 0)
            {
                MyRectangle = new Rectangle(MousePos.X, MousePos.Y, MousePos.X - MouseRec.X, MousePos.Y - MouseRec.Y);
            }
            else
            {
                MyRectangle = new Rectangle(MouseRec.X, MouseRec.Y, MouseRec.X - MousePos.X, MouseRec.Y - MousePos.Y);
            }
            MyGraphics.DrawRectangle(MyPen, MyRectangle);
        }
Wird die Maus bei gedrückter linker Maustatse nach oben Links bewegt, wird ein Rechteckt gezeichnet bzw. es werden hunderte gezeichnet ^^ Aber in die andere Richtung (unten Rechts). Ich verstehe nicht, wie man es richtig macht.


Gruß Radhad
 
Du musst dich mal in Drag & Drop einlesen. Dazu findest gescheite Artikel auf TheCodeProject.

Speichere das Rectangle was mit der Maus ausgewählt wurde. Erstelle ein neues Bitmap mit genau der Größe und gehe mit einer in sich verschachtelten for-Schleife durch das Quellbild und kopiere Pixel für Pixel in das neue Bitmap.

Schau auch mal nach, ob die Bitmap Klasse in .NET 2.0 vielleicht schon eine Methode dafür anbietet. :)
 
Zurück