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

1

25.12.2003, 16:48

Keise zeichen

Hi,

hat jemand eine Idee, wie ich einen GEFÜLLTEN Kreis zeichenen kann (Radius, Farbe, Mittelpunkt), und, wie ich einen UNGEFÜLLTEN Kreis zeichenen kann (Radius, Liniendicke, Linienfarbe, Mittelpunkt.)

Vielen Dank + schöne + frohe + weiße Weihnacht,

Danke,

Chrissi

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

25.12.2003, 17:01

Siehe TriBase-Funktionen in tbDraw2D.cpp!

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

3

25.12.2003, 19:17

Hi,

google hilft:

Bresenhams Kreisalgorithmus

Quellcode

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
43
44
45
46
void tbDraw2D::DrawCircle(DWORD cx, 
                          DWORD cy, 
                          DWORD r, 
                          D3DCOLOR c) 
{ 
    DWORD   x; 
    DWORD   y; 
    int     p; 
 
 
    // Diese Funktion zeichnet einen hohlen Kreis nach 
    // Bresenhams Kreisalgorithmus. 
 
    x = 0; 
    y = r; 
    p = 3 - (r << 2); 
 
    while(x < y) 
    { 
        pSetPixel(this, cx - x, cy - y, c); 
        pSetPixel(this, cx + x, cy - y, c); 
        pSetPixel(this, cx - x, cy + y, c); 
        pSetPixel(this, cx + x, cy + y, c); 
        pSetPixel(this, cx - y, cy - x, c); 
        pSetPixel(this, cx + y, cy - x, c); 
        pSetPixel(this, cx - y, cy + x, c); 
        pSetPixel(this, cx + y, cy + x, c); 
  
        if(p < 0) p = p + (x << 2) + 6; 
        else 
        { 
            p = p + ((x - y) << 2) + 10; 
            y--; 
        } 
 
        x++; 
    } 
 
    if(x == y) 
    { 
        pSetPixel(this, cx - x, cy - x, c); 
        pSetPixel(this, cx + x, cy - x, c); 
        pSetPixel(this, cx - x, cy + x, c); 
        pSetPixel(this, cx + x, cy + x, c); 
    } 
}


Bye :)

4

28.12.2003, 16:32

Yes,

that's it. Mit einer kleinen Abwandlung kann ich das sicher sehr, sehr gut gebrauchen.

Danke...

Schüssi,

Chrissi

Werbeanzeige