Laden...

Größenanagabe beim Zeichnen eines Rechteckes weicht vom Zeichenergebnis ab

Erstellt von Rainer Wein vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.514 Views
Thema geschlossen
R
Rainer Wein Themenstarter:in
90 Beiträge seit 2008
vor 9 Jahren
Größenanagabe beim Zeichnen eines Rechteckes weicht vom Zeichenergebnis ab

Hallo zusammen.

Auch auf die Gefahr hin mich lächerlich zu machen, ich habe ein Problem beim Zeichenen eines Rechteckes auf einem Panel.


using (Graphics g = this.panel1.CreateGraphics())
{
      Pen pen = new Pen(Color.Black, 1F);
      pen.Alignment = System.Drawing.Drawing2D.PenAlignment.Inset;

      g.DrawRectangle(pen, 2, 2, 10 , 10);
}

Wie man anhand meines Codes erkennen kann, soll ein Rechteck von 1010 Pixel an der Position 2,2 gezeichnet werden. Schaut man sich aber das gezeichnete Rechteck in einem Zeichenprogramm an
<siehe Anhang>
sieht man das das Rechteck zwar an der Position 2,2 gezeichnet wurde aber keine 10
10 Pixel groß ist. Warum?

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo Rainer Wein,

das wird in Fläche(Invalidate(Rect)) != Fläche(DrawRectangle(Rect))

herbivore

R
Rainer Wein Themenstarter:in
90 Beiträge seit 2008
vor 9 Jahren

Vielen Dank erstmal für den Hinweis trotzdem ist mir nicht ganz klar wie ich jetzt vorgehen muss.

Es geht um ein eigenes Steuerelement.
Das Panel(ClientRec) besitzt als BorderStyle den Type Fixed3D. Das Panel soll nun in weitere Bereiche unterteilt werden.
Als Beispiel soll die vom ClientRec zur Verfügung gestellt Fläche abzüglich der Border nochmal als eine gesonderte Fläche (ContentRec) unterteilt werden (Rot dargestellt).

<siehe Anhang>

Im Code sieht dies so aus:



ContentRec = ClientRec;

ContentRec .X += BorderLeft;
ContentRec .Y += BorderTop;
ContentRec .Width -= BorderRight + BorderLeft;
ContentRec .Height -= BorderBottom + BorderTop;


Hätte ich damit die komplette Fläche des ClientRec erfasst?
Zur Überprüfung der Größe hatte ich ein farbiges Rechteck gezeichnet welches wie bereits erwähnt immer ein Pixel zu lang war und damit die Border überzeichnet hatte.

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo Rainer Wein,

die Lösung ist doch offensichtlich: Vermindere die berechnete Breite und Höhe um eins.

Das ist nun wirklich elementar. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore

Thema geschlossen