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
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
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
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
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
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.
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 ??
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
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.