Laden...

Bild in PictureBox1 nach Button Click um x° rotieren

Erstellt von stef1 vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.073 Views
Thema geschlossen
S
stef1 Themenstarter:in
3 Beiträge seit 2013
vor 10 Jahren
Bild in PictureBox1 nach Button Click um x° rotieren

Hallo,

ich versuche bereits seit Wochen den folgenden Code fertig zu stellen. Dieses Projekt will ich gern wieder als Einstieg in die Programmierung nutzen. Das letzte mal hab ich vor 6 Jahren programmiert.

Ich habe momentan noch folgende Probleme:
1.) Ich weiß nicht, wie ich die alte PictureBox1 ++nach dem Button Click ++ lösche.
2.) Nach dem Button Click wird die rotierte/neue PictureBox1 nicht vollständig angezeigt (siehe Anhang)

Mein Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Grapic_Rotate_Button_Click
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            //Klasse 'Graphic' erfordert 'PaintEventHandler'
            this.Paint += new PaintEventHandler(GraphicRotate);
            //PictureBox1 wird nach dem 1sten Button1_click neu gezeichnet
            this.Refresh();           

        }

        private void GraphicRotate(object sender, PaintEventArgs e)
        {
            //PictureBox1 wird in einem extra Bitmap Objekt 'bm' gespeichert 
            Bitmap bm = new Bitmap(pictureBox1.Image);
            //Bitmap Objekt 'bm' wird in Klasse 'Graphics' konvertiert und in einem extra Graphics 
            Objekt 'g' gespeichert
            Graphics g = Graphics.FromImage(bm);
            //Drehung von PictureBox1 um x° + Zeichnung
            g.RotateTransform(45.0F);
            g.DrawImage(bm, new PointF(40.0F, 0.0F));
            //Bitmap Objekt 'bm' wird im Steuerelement 'pictureBox1' angezeigt
            pictureBox1.Image = bm;
        }
    }
}

Vielen Dank für eure Unterstützung im Voraus
Stefan

5.658 Beiträge seit 2006
vor 10 Jahren

Weeks of programming can save you hours of planning

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo stef1,

da geht wirklich noch einiges durcheinander.

Wenn du pictureBox1.Image setzt, dann brauchst du gerade keinen PaintEventHandler.

Wenn man einen PaintEventHandler hätte, würde dieser von Windows zu beliebigen Zeitpunkten beliebig oft aufgerufen. Das Rotieren müsste also in den Click-Handler.

Wenn du das alte Bild gedreht in ein neues Bild zeichnen willst, musst du klar zwischen Quelle und Ziel trennen und es nicht so mixen, wie du es hast.

Am besten ist es jedoch, nur die Orginal-Bitmap zu verwenden, die PictureBox wegzulassen und die Orginal-Bitmap direkt auf das Form zu zeichnen, natürlich im gewünschten Winkel.

Aber das findest du alles in dem genannten Tutorial.

Bitte schau mal in [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.

herbivore

Thema geschlossen