Autor Beitrag
Andy54
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 03.05.10 18:13 
Ich habe das Problem, dass ich ein Rechteck über ein buntes Bild zeichnen und auch wieder löschen möchte. Dabei soll das bunte Bild wieder vollständig sein. Ich brauche das, um ein "Auswahlquadrat" mit der Maus aufzuziehen (für ein Programm, das gestattet Teile der Mandelbrotmenge vergrößert zu sehen). in Delphi hat man dazu den PenMode auf XOR gesetzt. Gibt es das in C# auch? Wenn ja, wie wirds gemacht?
Unten habe ich die Codeteile für das Aufziehen mit der Maus hiheinkopiert. Das Programm macht statt einem einzelnen Quadrat viele Rechtecke übereinander, weil ich die bei mousemove gezeichneten Rechtecke nicht verschwinden lassen kann. Man soll aber sehen, was man mt der Maus auswählt.
Bitte lacht nicht über meine unprofessionelle Programmierung. Ich bin ein Anfänger in C#.
Danke für Eure Hilfe! :)



ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        bool drawing;
        int xAnfang, yAnfang, xEnde, yEnde;

        public Form1()
        {
            InitializeComponent();
        }

        public int max(int a, int b)
        {
            if (a < b)
            { return b; }
            else
            {
                return a;
            }
        }


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 03.05.10 18:50 
Zitat:
Unten habe ich die Codeteile für das Aufziehen mit der Maus hiheinkopiert.


Hmm, ich vermute mal da ist ein Großteil des Codes denn du uns zeigen wolltest irgendwo verloren gegangen. Überprüfe das Bitte doch nochmal.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4795
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 03.05.10 19:17 
Stichwort: Rubberband

Eine Möglichkeit besteht über die statische Methode ControlPaint.DrawFocusRectangle msdn.microsoft.com/e...le%28v=vs.71%29.aspx

Zum Löschen einfach nochmal diese Methode aufrufen (mit demselben Rechteck) - intern wird dann die von dir angesprochene XOR-Methode verwendet.

Alternativ kannst du auch die Methode ControlPaint.DrawReversibleFrame benutzen.
Andy54 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 04.05.10 17:02 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Stichwort: Rubberband

Eine Möglichkeit besteht über die statische Methode ControlPaint.DrawFocusRectangle msdn.microsoft.com/e...le%28v=vs.71%29.aspx

Zum Löschen einfach nochmal diese Methode aufrufen (mit demselben Rechteck) - intern wird dann die von dir angesprochene XOR-Methode verwendet.

Alternativ kannst du auch die Methode ControlPaint.DrawReversibleFrame benutzen.


Herzlichen Dank! Dein Tipp hat mir sehr geholfen!