Laden...

Fenster Randbreite

Erstellt von Bit2_Gosu vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.241 Views
B
Bit2_Gosu Themenstarter:in
116 Beiträge seit 2007
vor 16 Jahren
Fenster Randbreite

Hi !

Ein Fenster hat in Vista ja rechts und links einen dünnen Rand. Jetzt hab ich in Visual Express mal in einen Frame der Breite 300 einen Button der Breite 286 mittig erstellt. Das Resultat ist, dass der Button genau bis an das Innere dieses dünnen Ränder geht. Also dachte ich mir, die müssten jeweils 7 Pixel breit sein.

Dann hab ich aber festgestellt, dass mein Button die Position -1/irgendwas hat. wenn ich aber 0/irgendwas sage, dann ist zwischen dem linken dünnen rand und dem button circa 1 Pixel platz. Komisch...

wie breit sind denn nun die beiden dünnen ränder jeweils ??

T
223 Beiträge seit 2006
vor 16 Jahren

Hi,

Was meinst du denn mit einem Frame? Reden wir hier von Forms? Du kannst hier die Größe eines Fensters ohne Berücksichtigung des Rahmens mit "ClientSize" angeben.

Gruß Thomas

B
Bit2_Gosu Themenstarter:in
116 Beiträge seit 2007
vor 16 Jahren

Ah mit ClientSize klappts !

Jetzt hab ich noch eine kleine Frage. Ich habe eine Art Taschenrechner Ausgabe, in der der Taschenrechner das Ergebnis schreibt. Jetzt dachte ich, dafür nehme ich am besten ein Label. Leider lässt sich die Size des Labels aber nicht ändern... Sie will umbedingt z.B. eine Width von 35 haben...

Ist Label für die Aufgabe richtig und wenn ja, warum kann ich denn die Grße nicht ändern?

F
10 Beiträge seit 2007
vor 16 Jahren

Hallo sowieso,

sicher kannst su ein Label nehmen. Die größe ist - zumindest im Designer - durch die Autosize-eigenschaft bedingt. Setze diese mal auf FALSE; dann müsste die Größe frei einstellbar sein.

B
Bit2_Gosu Themenstarter:in
116 Beiträge seit 2007
vor 16 Jahren

ahh, perfekt!

Jetzt hab ich mir die ganzen properties eines Labels mal angeschaut. Nur eines vermisse ich irgendwie. Wie kann ich denn die Größe des Textes festlegen, der in einem Label steht ??

F
10 Beiträge seit 2007
vor 16 Jahren

Jetzt hab ich mir die ganzen properties eines Labels mal angeschaut.

dort müsstest du dann auch die Font-eigenschaft gefunden haben. (Deren Größe naturlich veränderbar ist)

B
Bit2_Gosu Themenstarter:in
116 Beiträge seit 2007
vor 16 Jahren

ohje, ich hatte das doch tatsächlich übersehen...sorry dafür.

Was ich mich aber noch frage, ist, welche margin werte die schrift selber hat. das müsste ich nämlich wissen, um die Schriftgröße der Height des Labels anzupassen. Die Schrift soll nämlich schön mittig im Label liegen. Es gibt tatsächlich einen Abstand vom oberen Rand des Labels zum oberen Anfang der Schrift im Label.

Also wenn ich das wieder übersehen habe, fresse ich meinen Hut..

F
10 Beiträge seit 2007
vor 16 Jahren

na dann guten Appetit 😁

du findest unter den Eigenschaften auch die Eigenschaft "TextAlign", die die Ausrichtung des Textes festlegt. Ansonsten würde ich dich auf "Padding" verweisen womit du die Position des Textes natürlich pixelgenau einstellen kannst.

B
Bit2_Gosu Themenstarter:in
116 Beiträge seit 2007
vor 16 Jahren

na, ich wart mit dem hut noch kurz 😉 denn auch wenn alle paddings 0 sind, gibt es zwischen dem oberen ende des textes und dem oberen ende des labels einen Abstand (den es unten nicht gibt). Wie kann ich denn raus kriegen, wie groß der ist?

F
10 Beiträge seit 2007
vor 16 Jahren

hm... 🤔
Spontan würde ich jetzt sagen, dass das von der Schriftgröße abhängt, aber wie man den jetzt genau ermittelt, weiß ich nicht. (Ich muss zugeben, dass ich mir vorher darüber noch nie gedanken gemacht habe)

915 Beiträge seit 2006
vor 16 Jahren

hm... 🤔
Spontan würde ich jetzt sagen, dass das von der Schriftgröße abhängt, aber wie man den jetzt genau ermittelt, weiß ich nicht. (Ich muss zugeben, dass ich mir vorher darüber noch nie gedanken gemacht habe)

Das geht ca. wie folgt 🙂


  using (Graphics gfx = new Graphics())
            {
                SizeF FontSize = gfx.MeasureString("TEXT", <Font>);
               
            }

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

F
10 Beiträge seit 2007
vor 16 Jahren

Hallo Andreas.May,

wie man die Größe einer Font berechnet weiß ich bereits, aber es ging ja um den Abstand zwischen oberer Labelgrenze und dem "oberen Ende" der Schrift,

denn auch wenn alle paddings 0 sind, gibt es zwischen dem oberen ende des textes und dem oberen ende des labels einen Abstand

der ja, wenn Padding = 0 auch null sein müsste.

Ich habe aber keinen Weg gefunden diesen zu ermitteln.

915 Beiträge seit 2006
vor 16 Jahren

Hrm, grübel

Den Abstand zwischen DeviceContext und Control.Size zu ermitteln bringt dir ja leider nichts, da ihn nicht raus bekommst. Der ist einfach fest vorhanden.

Jetzt kannst höchstens von Label ableiten und die OnPaint Methode überschreiben und schauen ob evtl ne protected Methode mit DrawString oder ähnliches findest die dann um das base.Draw ausklammerst. Oder du machst ein UserControl das dann komplett selbst neu aufbaust umd das Label zu ersetzen. Auch mit der Win32 API kannst in den DeviceContext höchstens reinmalen. Aber positionierungen ersetzen phuu, nie probiert.

Evtl gibts da ja etwas um den DeviceContext umzupositionieren, müsstest aber suchen (GetHDC usw.).

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(