mouseklick und ..



  • Hallo,

    wie kann ich einen Button einstellen, so damit wenn ich auf Ihn klicke folgendes passiert:

    Ein Rechteck soll gezeichnet werden, ich kann ein rechteck alleine zeichnen, also :

    private static void f1_paint( object sender, PaintEventArgs e )
    {
    
      // Get Graphics Object
      Graphics g = e.Graphics;
    
      // Create Font
      Font f = new Font( "Verdana", 12 );
    
      // Create Brush
      SolidBrush b = new SolidBrush( Color.Tomato );
    
      // Pen definieren
        Pen bluePen= new Pen(Color.DarkCyan,2);
    
        	g.DrawRectangle(bluePen,10,10,50,50);
      }
    
      f.Dispose();
      b.Dispose();
    }
    

    aber wie kann ich das so verbinden, das es erst nach einem Mouseklick pasiert??

    kann man das irgendwie schon im Designer von SharpDevelopement einstellen?
    oder kann ich die Methode f1_paint in der Mouseklick Methode angeben?, aber was kommt dann als parameter in die Methode fi???

    Danke



  • bool isMouseDown = false;
    private void Form_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    	DrawRect( this.CreateGraphics() );
    	isMouseDown = true;
    }
    
    private void Form_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
    	if( isMouseDown )
    		DrawRect( e.Graphics );
    }
    
    private void DrawRect( Graphics g )
    {
    	// Create Font
    	Font f = new Font( "Verdana", 12 );
    	// Create Brush
    	SolidBrush b = new SolidBrush( Color.Tomato );
    	// Pen definieren
    	Pen bluePen= new Pen(Color.DarkCyan,2);
    	g.DrawRectangle(bluePen,10,10,50,50);
    	f.Dispose();
    	b.Dispose(); 
    }
    


  • also mein kompletter Code sieht so aus, habe deins ersucht klappte aber nicht, was muß ich zusätzlich denn noch ändern???

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace Test
    {
    	/// <summary>
    	/// Description of MainForm.
    	/// </summary>
    	public class MainForm : System.Windows.Forms.Form
    	{
    		private System.Windows.Forms.Button button1;
    		public MainForm()
    		{
    			//
    			// The InitializeComponent() call is required for Windows Forms designer support.
    			//
    			InitializeComponent();
    
    			this.Paint += new PaintEventHandler( f1_paint );
    			//
    			// TODO: Add constructor code after the InitializeComponent() call.
    			//
    		}
    
    		[STAThread]
    		public static void Main(string[] args)
    		{
    			Application.Run(new MainForm());
    		}
    
    		#region Windows Forms Designer generated code
    
    		private void InitializeComponent() {
    			this.button1 = new System.Windows.Forms.Button();
    			this.SuspendLayout();
    			// 
    			// button1
    			// 
    			this.button1.Location = new System.Drawing.Point(80, 304);
    			this.button1.Name = "button1";
    			this.button1.Size = new System.Drawing.Size(128, 32);
    			this.button1.TabIndex = 0;
    			this.button1.Text = "EinmalEins";
    			this.button1.Click += new System.EventHandler(this.Button1Click);
    
    			// 
    			// MainForm
    			// 
    			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    			this.ClientSize = new System.Drawing.Size(360, 358);
    			this.Controls.Add(this.button1);
    			this.Name = "MainForm";
    			this.Text = "MainForm";
    			this.ResumeLayout(false);
    		}
    
    		private static void f1_paint( object sender, PaintEventArgs e )
    {
    
      // Get Graphics Object
      Graphics g = e.Graphics;
    
      // Create Font
      Font f = new Font( "Verdana", 12 );
    
      // Create Brush
      SolidBrush b = new SolidBrush( Color.Tomato );
    
      // Pen definieren
        Pen bluePen= new Pen(Color.DarkCyan,2);
    
        // Ueberschrift
      g.DrawString( "Hallo", f, b, 100, 100 );
    
      }
    
      // Now tidy up
      f.Dispose();
      b.Dispose();
    }		
    		#endregion
    		void Button1Click(object sender, System.EventArgs e)
    		{
    
    		}
    
    	}
    }
    

    will also nach dem Mausklick die Graphic ausgeben ..



  • Du musst nichts ändern, mein Code funktioniert.
    Wenn Du nur bei einem Button- bzw. Mouse-Click das Rechteck zeichnen willst, dann schreibe folgenden Code in die Routine.

    Graphics g = this.CreateGraphics();
    Font f = new Font( "Verdana", 12 );
    SolidBrush b = new SolidBrush( Color.Tomato );
    Pen bluePen= new Pen(Color.DarkCyan,2);
    g.DrawRectangle(bluePen,10,10,50,50);
    // Ressourcen noch freigeben
    

Anmelden zum Antworten