Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: vertikaalinen teksti: Win32

Sivun loppuun

jospa [19.02.2009 18:43:41]

#

Miten ihmeessä windows sovelluksissa saadaan aikaiseksi vertikaalista tekstiä? Olen yrittänyt tätä createfont-funktiolla, mutta staattisten kontrollien teksti kääntyy pois näkyvistä, kun laittaa kulmaksi 90 astetta.

HFONT namy = CreateFont(16, 0, 900, 0, FW_BOLD, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "Arial");
NameY1 = CreateWindow("STATIC",  "y-axis" , WS_VISIBLE | WS_CHILD | SS_LEFT,10,150,40,20,window2,NULL,g_hInst,0);
SendMessage (NameY1, WM_SETFONT, (WPARAM) namy, MAKELPARAM(TRUE, 0));

tkok [19.02.2009 19:13:48]

#

Asiasta tietämättömänämietin voisiko 90o aiheuttaa jonkinlaisen nollalla jaon. Kun cos 90o = 0. ja kun laskemme kulmakerotoimen y=kx+b muotoiselle funkitoille, pystysuoraa ei pystytä toteuttamaan kulmakertoimen lähestyessä ääretöntä.

neau33 [19.02.2009 19:17:12]

#

Heippa jospa!

menisikö unclockwise eli kokeile toimisiko näin päin!
HFONT namy = CreateFont(16, 0, -2700, 0,...

jospa [19.02.2009 22:38:32]

#

Näytti olevan sama efekti tuon -2700 kanssa. Kokeilin kääntää tekstiä 10 astetta kerrallaan ja teksti vain pikku hiljaa kääntyy pois näkyvistä, koska piste jonka suhteen tekstiä käännetään on staattisen ikkunan yläreunassa. Viimein, kun on kääntänyt 90 astetta, koko teksti häipyy näkyvistä.

neau33 [20.02.2009 10:23:51]

#

Heippa jospa!

MSDN API-Declaration

Metabolix [20.02.2009 11:04:53]

#

Mitä tarkoitat, "kääntyy pois näkyvistä"? Onko vika itse tekstissä vai piirretäänkö se vain väärään paikkaan (ikkunan ulkopuolelle)? Jälkimmäisessä tapauksessa pitäisi varmaankin vain muuttaa tekstin sijoittelua ikkunassa.

Teuro [20.02.2009 11:44:52]

#

jospa kirjoitti:

HFONT namy = CreateFont(16, 0, 900, 0, FW_BOLD, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "Arial");

Meneekö tuo niin, että teksti piirretään 16 pikseliä yläreunasta ja 0 pikseliä vasemmasta reunasta? Mikäli arvaus menee edes lähelle saattaa ongelman ratkaisu olla yllättävän lähellä.

jospa [20.02.2009 14:48:11]

#

Tarkoitan poiskääntymisellä nimenomaan, että teksti piirretään ikkunan ulkopuolelle, itse tekstissä ei ole vikaa.

Tuolla 0-leveydellä ei ole merkitystä:
"nWidth [in]:

Specifies the average width, in logical units, of characters in the requested font. If this value is zero, the font mapper chooses a closest match value. The closest match value is determined by comparing the absolute values of the difference between the current device's aspect ratio and the digitized aspect ratio of available fonts."

Sain asian korjattua ainakin siten, että lisäsin kenttään tyhjiä rivejä ja käytin SS_RIGHTJUST tyyliä. En tiedä onko paras mahdollinen ratkaisu...

NameY1 = CreateWindow("STATIC",  "\n\n\ny-axis" , WS_VISIBLE | WS_CHILD | SS_RIGHTJUST,10,150,20,150,window2,NULL,g_hInst,0);

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta