Hi christian,
ja, es funktioniert. Ich hatte den Textfont und Size dem Picture zugewiesen und
nicht dem Graphics
pic. G.TextFont=PopupMenu1.Text
pic.G.TextSize=val(PopupMenu2.Text)
so funktioniert es nun
G.TextFont=PopupMenu1.Text
G.TextSize=val(PopupMenu2.Text)
danke für die Kopfwäsche..
Gruß
Klemens
Am 31.03.2011 um 15:22 schrieb Christian Dorn:
> Ich habe das gerade mal getestet und bekomme hier ein richtiges Ergebnis.
> Kopiere mal den folgenden Code in den Paint-Event eines ansonsten leeren
> Fensters. Der der Text sollte rechtsbündig ausgerichtet sein und einen
> Abstand von 20 Pixel zur rechten Kante des Fensters haben. Wie sieht das
> Ergebnis bei Dir aus?
>
> Ach ja, ich verwende Rb 2009r5.1.
>
>
> const text = "Ich bin ein Text."
>
> g.TextSize = 12
> g.TextUnit = FontUnits.point
> g.bold = false
> g.italic = false
>
>
> // TextFont = "Courier"
> g.TextFont = "Courier"
> g.DrawString text, self.width -g.StringWidth(text) -20, 50
> dim i1 as Integer = g.StringWidth(text)
>
> // TextFont = "Arial"
> g.TextFont = "Arial"
> g.DrawString text, self.width -g.StringWidth(text) -20, 75
> dim i2 as Integer = g.StringWidth(text)
>
> // TextFont = "System"
> g.TextFont = "System"
> g.DrawString text, self.width -g.StringWidth(text) -20, 100
> dim i3 as Integer = g.StringWidth(text)
>
>
> // Die Breite der 3 Test-Strings in der Titelzeile des Fensters ausgeben
> self.title = Str(i1) +" / " +Str(i2) +" / " +Str(i3)
>
>
>
> Gruß
> Christian
>
>
>
> Am 31.03.2011 um 14:49 schrieb Klemens Klarhoelter:
>
>> Hallo Christian,
>>
>> danke für den Tipp aber die Schriftart etc. wird übergeben.
>> Ich habe mir die Werte im Debugger angeschaut und man sieht,
>> das die Formatierung nicht berücksichtigt wird.
>> Ich habe eine Länge von 129 Pixel bei der Schriftart Courier und wenn
>> ich auf Arial umschalte auch 129 Pixel. Bei Arial muß es weniger sein.
>> Die Schriftart wird korrekt dargestellt, aber da der Startpunkt links immer
>> der gleiche passt es rechts nicht mehr.
>> Ist es so schwer ein Text im Graphics auszurichten?
>>
>> Gruß
>> Klemens
>> Am 31.03.2011 um 10:19 schrieb Christian Dorn:
>>
>>> Am 31.03.2011 um 09:42 schrieb Thomas Tempelmann:
>>>
>>>> 2011/3/31 Klemens Klarhoelter <[email protected]>:
>>>>> TextPosV = floor(G.StringWidth(NthField(Listbox1(tab).cell(i,1),",,",i1))
>>>>
>>>> Naja. So eine Zeile ist irreführend für einen Aussenseiter mit all dem
>>>> Kram darin, der mir nix sagt. Ich kenne doch deinen Code drumherum
>>>> nicht. Beschränke dich doch bitte aufs Wesentliche, wenn du um Hilfe
>>>> bittest.
>>>>
>>>> Alles, worum es geht ist:
>>>> 1. StringWidth(s)
>>>> 2. g
>>>> Und g must von dem Graphics-Obj sein, in das du mit DrawString
>>>> reinschreibst. Ist das der Fall?
>>>>
>>>>> Verdana passt es relativ gut aber bei allen anderen sind die Abweichungen
>>>>> 5-30 Pixel!
>>>>
>>>> Tja, evtl. ist das wirklich so blöde. Keine Ahnung, ich hab das noch
>>>> nie dafür verwendet.
>>>
>>> Meiner Erfahrung nach funktioniert das recht zuverlässig. Bei kursiven
>>> Texten muss man nur beachten, dass .StringWidth die Breite der Fußlinie
>>> zurückgibt; d. h. oberhalb der Fußzeile kann der Text noch etwas breiter
>>> sein als von der Funktion ermittelt.
>>>
>>> Allerdings muss man natürlich die Text-relevanten Eigenschaften des
>>> Graphic-Objektes entsprechend einstellen. In dem Beispiel sieht es so aus,
>>> als würde Klemens darauf bauen, dass die Formatierung des Strings in der
>>> ListBox von .StringWidth beachtet wird. Das ist selbstverständlich nicht
>>> der Fall! Also muss vor dem Aufruf von.StringWidth folgendes eingestellt
>>> werden:
>>>
>>> g.TextFont = ...
>>> g.TextSize = ...
>>> g.bold = ...
>>> g.italic = ...
>>> g.TextUnit = ... (ist glaube ich nur nötig, wenn ein anderes Maßsystem als
>>> 'Punkt' für die Schriftgröße verwendet werden soll)
>>>
>>> Gruß
>>> Christian
>>>
>>>
>>
>> Klemens Klarhoelter-Selbst
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
Klemens Klarhoelter-Selbst