Einen leeren Kreis zeichnen
Übersicht

![]() |
HubsiBetreff: Einen leeren Kreis zeichnen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schönen guten Tag.
Ich experimentiere gerade mit DrawOval herum und komme nicht drauf (sofern überhaupt möglich) wie ich einen Kreis zeichnen kann der nicht gefüllt ist. Für das aktuelle "Max-mal-ausprobieren" ist es gerade egal, da ich den Kreis eh gefüllt brauche, aber zu wissen wie es machbar ist schadet ja nix ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Angenommen, du sprichst von Max2D:
Ich glaube, es gibt da tatsächlich keine Funktion. Falls du nur einfarbigen Hintergrund hast, kannst du etwas kleinere Oval in der Hintergrundfarbe obendrauf zeichnen; falls du nur Ovale in festen Größen brauchst, kannst du sie so in ein Image (erstellt mit MASKEDIMAGE-Flag) zeichnen und dann dieses benutzen. Ansonsten müsstest du dir das wohl selbst was basteln. Alternativ könntest du dir Ava.Gfx anschauen. Unterstützt zwar nur OpenGL und eignet sich für pixelgenaues Zeichnen nicht so gut, ist aber eine deutlich mächtigere Engine als Max2D und dabei auch nicht schwieriger zu benutzen. |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gibt unter Max2D in der Tat keine ungefüllten Primitives, traurig aber wahr.
Ich würde auch zu kleineres Innenoval reinrendern tendieren, auch wenn das in Teilen Fehlerbehaftet ist. Ansonsten hilft Bresenham, da Plot aber grottenlahm ist würde ich das nur einmal in eine Pixmap rendern und die dann einzeichnen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nun gut, vielen Dank ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
nX^ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hatte das gleiche Problem auch irgendwann mal. Ich hatte mir hiermit beholfen, auch wenn es nicht unbedingt das gelbe vom Ei ist...
BlitzMax: [AUSKLAPPEN] Function DrawCircle(x:Int ,y:Int ,r:Int) |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe mir grade mal erlaubt den Bresenham aus der Wikipedia umzubasteln, als Grundlage:
BlitzMax: [AUSKLAPPEN]
|
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Frage interessehalber, Du verwendest DrawLine nx^. Ist das schneller als Plot wie es BladeRunner benutzt? | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein. Die Idee dahinter ist wahrscheinlich, dass man die Schrittweite der Schleife erhöhen könnte, um etwas weniger runde, dafür aber schnellere Kreise zu zeichnen. Trotzdem ist das um ein Vielfaches langsamer als Blades Variante - welche bei besonders großen Ellipsen allerdings Probleme bekommt. | ||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Interessant, welche Werte hast Du da genommen? Das würd ich gern mal unter die Lupe nehmen. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ausreichende Fenstergröße (1200x800) und "x=MouseX()+1 y=MouseY()+1", dann einfach die Maus Richtung unten rechts bewegen. Ohne das "+1" geht es übrigens auch nicht gut, dann hängt es sich auf ![]() |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN]
Okay, gefixt. Die 0en werden nun abgefangen und der Bereich der Fehlervariable wurde auf long erhöht. Der Fehler sprengt nämlich in der Tat die Grenze eines Integers und führt so zu einem Überlauf. Mit den lLongs sollte für alle handelsüblichen Anwendungen nun Friede eingekehrt sein. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich finde, dass es wert wäre eine Lösung für dieses Problem, das ich auch gut kenne, in BlitzMax zu integrieren.
Deswegen habe ich versucht, das auf Grafiktreiberbasis zu implementieren. Meine Versionen von glmax2d, d3d7max2d und d3d9max2d können jetzt nichtgefüllte Ovale zeichnen. DrawRect kann jetzt auch nichtgefüllte Rechtecke malen, aber das ist generisch über DrawLine gelöst. Meine Änderungen: https://github.com/chtisgit/bl...3eff1218a1 ZIP-Archiv (geänderte Dateien): https://www.blitzforum.de/upload/file.php?id=13184 |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group