Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

1

20.01.2009, 19:50

Textausgabe mit ID3DXFont::DrawTextA -> begrenzung festle

Hallo

ich möchte eine Textbox für textausgaben programmieren. dabei
soll die box scrollbar sein. eine passende scrollbare scrollbar :D hab ich schon.

jetzt stellt sich mir die frage wie ich den text auf die box begrenzen
kann. als parameter übergebe ich der funktion ein rechteck, was je nach
position der scrollbar verschoben wird.

allerdings guckt der text dann an den seiten raus, was ja nicht soll.
wie kann ich den text "abschneiden" ? es sollen durchaus noch buchstaben
reste zu sehen sein.

ich dachte an ein stenciltest, aber jedes mal für das zeichen eines textes
die ganzen einstellgunen ändern... das muss doch auch anders gehen ;)

soll mit directx laufen bzw mit der methode DrawText von ID3DXFont
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

2

20.01.2009, 20:09

Da gibts ein Haufen Format-Flags für die Methode DrawText.
Z.B. DT_WORDBREAK (automatischer Umbruch).
Werf diesbezüglich mal einen Blick in die DX-Doku.
fka tm

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

3

20.01.2009, 20:34

das flag kenne ich, nutzen tu ich es auch.

um das problem nocheinmal genauerzu beschreiben:

ich habe eine textbox (ein einfacherer rahmen) der die grenzen des
textes definieren soll. die box ist z.b. 200 * 200 pixel groß.

der text allerdings (wird automatisch umgebrochen) ist gesamt

200 * 500 pixel groß. er passt also nicht in die box. jetzt hab ich am
rande eine scrollbar, mit der man den richtigen ausschnitt aussuchen kann.

das klappt auch, indem das rechteck für die methode verändert wird.

allerdings guckt der text dann oben aus der box raus, was nicht sein soll.

die begrenzung zur seite macht das flag automatisch.

bsp:

Quellcode

1
2
3
4
5
6
7
8
.das ist
.ein ganz
__________
|langer...|
|text, der|
|oben.....|
|rausguckt|
|_________|


ich will den oberen teil abschneiden.
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

4

20.01.2009, 20:43

es gibt einen pRect parameter, der auf dieses rechteck den Text clippen kann.

wenn du scrollst, dann zeichnest zu einfach nic den ganzen string sondern z. b. nur ab de rzweiten zeile, alles was "unten raus hängt" wird dann abgeschnitten.

ist für weiches scrolling nen bissl gefriemel, weil du dann das reckt auch verschieben musst bis die nächste zeile weg ist, anders fällt mir aber momentan mit dieser klasse keine gute lösung ein da müsst ich jetz anggestrengt nachdenken^^

Gotbread

Alter Hase

  • »Gotbread« ist der Autor dieses Themas

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

5

20.01.2009, 22:18

habs hinbekommen :)

mit IDirect3DDevice9::SetScissorRect kann man den bereich bestimmen,
in dem gezeichnet wird => wunderbar weiches scrollen :)
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

Werbeanzeige