Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

wyśrodkowany tekst i jego współrzędne

0 views
Skip to first unread message

marcin

unread,
Dec 6, 2009, 6:48:46 PM12/6/09
to
Witam,

Mam nast�puj�cy problem. Rysuj� tekst wy�rodkowany za pomoc� funkcji
DrawString():

--
Format.Alignment = StringAlignment.Center;
Format.LineAlignment = StringAlignment.Center;

g.DrawString(Text, Font, ForeBrush, Bounds, Format);
--

I mam teraz pytanie. Czy jest mo�liwe uzyskanie wsp�rz�dnych pod kt�rymi
zostaďż˝ umieszczony tekst przez funkcjďż˝ DrawString?
Warto�ci Bounds s� mi znane jednak stanowi� one pole docelowe dla tekstu
wy�rodkowanego a ja chc� uzyska� dok�adnie pole zajmowane przez
automatycznie wy�rodkowany tekst funkcj� DrawString. Rozmiar tekstu mog�
spokojnie pobra� funkcj� MeasureString(), natomiast co z jego po�o�eniem,
skoro byďż˝ centrowany automatycznie? Czy jest to wykonalne?


Z g�ry dzi�kuj� za pomoc.

--
Pozdrawiam
Marcin


__________ Informacja programu ESET Smart Security, wersja bazy sygnatur wirusow 4665 (20091206) __________

Wiadomosc zostala sprawdzona przez program ESET Smart Security.

http://www.eset.pl lub http://www.eset.com

Paweł Kierski

unread,
Dec 7, 2009, 7:23:22 AM12/7/09
to
marcin wrote:
> Witam,
>
> Mam następujący problem. Rysuję tekst wyśrodkowany za pomocą funkcji
> DrawString():
>
> --
> Format.Alignment = StringAlignment.Center;
> Format.LineAlignment = StringAlignment.Center;
>
> g.DrawString(Text, Font, ForeBrush, Bounds, Format);
> --
>
> I mam teraz pytanie. Czy jest możliwe uzyskanie współrzędnych pod
> którymi został umieszczony tekst przez funkcję DrawString?
> Wartości Bounds są mi znane jednak stanowią one pole docelowe dla tekstu
> wyśrodkowanego a ja chcę uzyskać dokładnie pole zajmowane przez
> automatycznie wyśrodkowany tekst funkcją DrawString. Rozmiar tekstu mogę
> spokojnie pobrać funkcją MeasureString(), natomiast co z jego
> położeniem, skoro był centrowany automatycznie? Czy jest to wykonalne?
>

Może podejdź do sprawy odwrotnie - skoro znasz rozmiar tekstu
i rozmiar pola, w którym ma być umieszczony, to sam go wycentruj:
lewa krawędź tekstu = (lewa krawędź pola + szerokość tekstu)/2
(analogicznie góra-dół). Narysujesz sam w odpowiednim miejscu.

--
Paweł Kierski
ne...@pkierski.net

marcin

unread,
Dec 7, 2009, 1:16:00 PM12/7/09
to
Użytkownik "Paweł Kierski" <ne...@pkierski.net> napisał w wiadomości
news:hfis3q$59m$1...@news.onet.pl...

Tak, zdaję sobie sprawę z takiej możliwości i oczywiście nasuwa się ona
samoistnie, jednak do przebudowy mam cudzy kod (silnik drukujacy raporty),
więc łatwiej byłoby mi zmienić kod w odwrotny sposób, o który pytałem a
który wyglada jednak na niewykonalny. Tak czy owak dziękuję za odpowiedż.

Dziękuję i pozdrawiam
Marcin


__________ Informacja programu ESET Smart Security, wersja bazy sygnatur wirusow 4667 (20091207) __________

Tomasz Muszyński

unread,
Dec 7, 2009, 1:21:34 PM12/7/09
to
W dniu 09-12-07 19:16, marcin pisze:

No to może g.MeasureString(), a resztę policz?

tm

yamma

unread,
Dec 7, 2009, 2:33:11 PM12/7/09
to
marcin wrote:

> automatycznie wy�rodkowany tekst funkcj� DrawString. Rozmiar tekstu
> mogďż˝ spokojnie pobraďż˝ funkcjďż˝ MeasureString(), natomiast co z jego
> po�o�eniem, skoro by� centrowany automatycznie? Czy jest to wykonalne?

Je�li znasz wsp�rz�dne i wymiary obszaru, na kt�rym rysujesz, to jak
najbardziej wykonalne. Wystarczy proste dzia�anie arytmetyczne: (szeroko��
obszaru - szeroko�� tekstu) / 2.
yamma

0 new messages