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

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

11

14.05.2012, 17:39

Ahh die Begriffe haben mir bei der Suche geholfen:

http://www.songho.ca/dsp/convolution/con…html#cpp_conv2d

Und als Filter will ich es dann mit den "edge detection" versuchen.
http://buza.mitplw.com/blog/?p=159

Dann müsste man theoretisch einfach die BitmapFont auf das edge-detection-Ergebniss drauf blt.

Bin mir aber nicht ganz Sicher was ich für ein Kernel nehmen soll:
http://www.imagemagick.org/Usage/convolve/#edgedet_kernels

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

14.05.2012, 18:16

Nochmal meine Frage: Wie genau erzeugst du die Bitmap Font? Wieso kannst du nicht einfach beim Erzeugen schon entsprechende Buchstaben malen? Wieso meinst du, das unbedingt nachträglich per Edge-Detection machen zu müssen?

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

13

14.05.2012, 19:10

Ich erzeuge die BitmapFont mit freetype und das funktioniert auch.
Dann speichere ich die Bitmap ab und erzeuge die Konturen mit Photoshop.
Und damit ich das nicht immer machen muss wollte ich das so machen.
Oder hat jemand n andere Idee.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

14.05.2012, 19:17

Auch wenn ich selber keine Erfahrung mit freetype hab, würd ich jetzt doch mal davon ausgehen, dass freetype dir einfach deine Buchstaben schon direkt so malen kann wie du es haben willst, vermutlich mit wesentlich mehr Möglichkeiten und besseren Ergebnissen als irgendwelche Kantenfilter dir jemals geben könnten...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (14.05.2012, 19:30)


kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

15

18.05.2012, 11:26

Hab leider bei freetype nix praktisches gefunden.
Hab mich dann für die einfach Lösung entschieden, leider gibts da keine Kantenglättung aber für den Anfang reicht es.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
void TTFFont::setStroke(uint width,const Color& color){

    for(uint w = 0;w < width;w++){

        Bitmap strokeFont (this->bitmap.getWidth(),this->bitmap.getHeight());    
        for(int y = 0;y < this->bitmap.getHeight();y++){

            for(int x = 0;x < this->bitmap.getWidth();x++){

                Color pix = this->bitmap.getPixel(x,y);

                if(pix.alpha > 0){

                    for(int addy = -1;addy <= 1;addy++){

                        for(int addx = -1;addx <= 1;addx++){

                            Color pix2 = this->bitmap.getPixel(x+addx,y+addy);

                            if(pix2.alpha < 255){

                                strokeFont.setPixel(x+addx,y+addy,color);

                            }

                        }

                    }

                }

            }

        }

        strokeFont.bltFull(this->bitmap,0,0);

        this->bitmap = strokeFont;

    }

}


Wer aus Spaß mal mit den filtern rumprobieren ^^

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

18.05.2012, 12:06

Ich weiß wie gesagt nicht was der freetype Glyph Renderer so alles kann. Aber ein einfacher Weg um Buchstaben mit so einer Outline zu bekommen, ist die Buchstaben zuerst entsprechend vergrößert in der Farbe der Outline zu malen und danach in kleinerer Größe in der Füllfarbe drüber.

Werbeanzeige