Laden...

Ende der Form

Erstellt von Blue_Dragon vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.768 Views
B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 17 Jahren
Ende der Form

Hi Leute!

Ich möchte in GDI+ einen Strich von 0,0 bis genau zum unteren Ende der Form zeichnen, aber wenn ich this.ClientSize.Height nehme, dann zeichnet er den Strich immer viel weiter nach unten...

Bei this.ClientRectangle.Height ist das genauso...

Kennt jemand eine möglichkeit wie ich direkt die Y Koordinate der untersten Stelle meiner Form bekomme?

lg

S
709 Beiträge seit 2005
vor 17 Jahren

Hallo Blue_Dragon!

Benutze mal this.Height! Falls das nicht geht ist was mit deinem Code nicht in Ordnung, denn so funktionierts:

 
protected override void OnPaint(PaintEventArgs e)
{
    e.Graphics.DrawLine(Pens.Black, 0, 0, 0, this.Height);
}

Gruß,
SimonKnight6600

1.549 Beiträge seit 2004
vor 17 Jahren
			
System.Drawing.Graphics g = this.CreateGraphics();
this.Refresh();
g.DrawLine(new Pen(Color.Black),0,0,this.ClientSize.Width,this.ClientSize.Height);

Funktioniert bei mir ohne Probleme. ich habe aber den Verdacht das du im Paint Event zeichnest das ja auch aufgerufen wird wenn du das Fenster Vergrößerst und du so eine Verfälschung erhältst

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo zusammen,

ich möchte S.H.-Teichhof zustimmen und bei SimonKnight6600 anmerken, dass das nur korrekt funktioniert, wenn this.Height == this.ClientSize.Height ist.

Size sind die Außenkoordinaten des Controls, ClientSize ist der Bereich, in den man selbst zeichnen kann. Also immer ClientSize statt Size verwenden (auch wenn es zufällig das gleiche ist).

herbivore

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 17 Jahren
        private void button1_Click(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            this.Refresh();
            g.PageUnit = GraphicsUnit.Millimeter;

            //g.DrawRectangle(Pens.Black, 0, 0, 1, this.ClientSize.Height - 15);
            g.DrawLine(Pens.Black, 1, 1, 1, this.ClientSize.Height - 100);

            g.Dispose();
        }

Wenn ich das schreibe sollte ja meiner Meinung nach eine Linie von oben nach unten gezogen werden, die dann einen cm über der unteren Formgrenze endet, die Linie die ich zeichnen lasse, geht aber trotzdem bis ganz nach unten

1.271 Beiträge seit 2005
vor 17 Jahren

Ist doch klar! Du stellst die Einheit des Graphics-Objekts auf Millimeter, Die Formgröße usw sind aber in Pixeln angegeben! Du musst entweder ClientSize umrechnen, oder die 100 (mit denen du 1cm erreichen magst, und als mm übrigens 10cm wären) durch die Pixelanzahl pro cm ersetzen (auch berechnen).

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 17 Jahren

Aja danke... Hab jetzt auf Pixel umgestellt und es funktioniert so wie ich es wollte 🙂 ich dachte er stellt mir dann alles auf cm um

Aber wie bekomm ich die umrechnung von pixel auf cm ??

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Blue_Dragon,

Pixel kann man nicht ohne weiteres in cm umrechnen, wenn man die Auflösung nicht kennt. Wenn man die Auflösung kennt, ist es dagegen ganz leicht, weil die Auflösung ja gerade angibt, wieviele Pixel auf eine Längeneinheit (meistens Inch = Zoll = 2,54 cm) kommen. 100 DPI = Dots (=Pixel) per Inch.

herbivore

1.271 Beiträge seit 2005
vor 17 Jahren

Die Klasse Graphics bietet dafür schon zwei Eogenschaften: DpiX, DpiY.

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.