GDI+ DrawString mit Hintergrund?



  • Hallo,
    ich weiß nicht, ob ich in dem Unterforum hier richtig bin, ich hoffe mal ja.

    Ich möchte in eine Graphics Object mit DrawString einen Text zeichnen, das klappt auch ohne Probleme.
    Ich möchte gerne einen Weißen Text auf weißen Hintergrund Zeichnen. Gibt es eine Möglichkeit den Weißen Text schwarz zu umranden, damit die Buchstaben wieder leserlich sind.
    Oder den Text mit der Komplimentärfarbe des Textes zu umranden?

    Wäre über eine Antwort sehr dankbar.

    Grisu



  • Mir sind zwei Wege bekannt, der Erste funktioniert zumindest mit der normalen GDI, möglicherweise aber nicht mit GDI+.

    1. mit Pfaden (BeginPath, EndPath, usw.) kann man einen Pfad erstellen, der dem Texte entspricht und diesen Pfad kann man dann mit der gewünschten Farbe umranden (StrokePath). IIRC ist im Petzold genau dazu ein Beispiel drin.
    2. du zeichnest den Text in der gewünschten Farbe versetzt in jede Richtung OL, O, OR, R, UR, U, UL, L (O=Oben, L=links, R=rechts, U=unten) und dann wie gewohnt den weißen Text in die Mitte

    Für 2. darfst du die Schrift natürlich nicht weich (antialiased, usw.) zeichnen.
    Übrigens sieht das Ergebnis der 2. Möglichkeit besser aus als das der 1., da wurden glaub immer die Ecken etwas abgerundet, wobei es da bestimmt irgendeinen Style dagegen gibt.



  • Cool
    vielen Dank, ich werde es direkt mal ausprobieren.

    Grisu



  • Ich habe es direkt ausprobiert, es sieht aber leider nicht so richtig schön aus, warscheinlich werden die Texte weich gezeichnet.
    Ich kenne mich mit GDI nicht wirklich aus, ich fusche grade ein wenig in existierendem Code herrum. Wie kann ich das Weichzeichnen denn ausschalten?

    Grisu



  • Ich vermute mal, dass es mit der SetTextRenderingHint-Methode der Graphics-Klasse funktioniert. In der MSDN [edit](die übrigens sehr zu empfehlen ist)[/edit] ist sogar ein Beispiel: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/GDIPlusreference/classes/graphicsclass/graphicsmethods/settextrenderinghint.asp


Anmelden zum Antworten