Ich arbeite an diesem Iso-Raster-Spiel (genauer: dimetrische Projektion, indexiert in typischen Diamant-Layout) und wollte Kreisbürsten implementieren, um Fliesen auf meiner Karte nur zu malen wie in jeder Bildbearbeitungssoftware. Ich begann mit dem Midpoint Circle Algorithm, aber bemerkt sofort, dass das Ergebnis nicht so aussieht, was ich will für kleine Pinselgrößen zwischen 1 und 7.Bessere Algorithmus als Midpoint Circle für Kachel Map Brushes auf Iso-Gitter
würde ich viel lieber etwas wie dieses:
ignorieren, dass die ersten Kreise nicht gefüllt sind, das ist natürlich einfach. Gibt es geeignete Algorithmen zur Formerzeugung auf Iso-Gittern? Ich möchte wahrscheinlich nicht einmal Kreisformen, sondern abwechselnde Quad- und Kreuz-ähnliche/x-Formen. Hier
ist der Code für die erste Bild Probe aus der Wikipedia:
static List<IntVector2> GetBrushCircleCoords(int x0, int y0, int radius)
{
List<IntVector2> coords = new List<IntVector2>();
int x = radius;
int y = 0;
int err = 0;
while (x >= y)
{
coords.Add(new IntVector2(x0 + x, y0 + y));
coords.Add(new IntVector2(x0 + y, y0 + x));
coords.Add(new IntVector2(x0 - y, y0 + x));
coords.Add(new IntVector2(x0 - x, y0 + y));
coords.Add(new IntVector2(x0 - x, y0 - y));
coords.Add(new IntVector2(x0 - y, y0 - x));
coords.Add(new IntVector2(x0 + y, y0 - x));
coords.Add(new IntVector2(x0 + x, y0 - y));
y += 1;
err += 1 + 2 * y;
if (2 * (err - x) + 1 > 0)
{
x -= 1;
err += 1 - 2 * x;
}
}
return coords;
}
nicht sicher, wie man Verbessere den Code für kleine Kreise. Aber wie du schon erwähnst, magst du eigentlich (sowieso) keine Kreise haben, ich dachte mir das hier [Beitrag über 'virtuelle Pixel'] (http://stackoverflow.com/questions/22881312/c-sharp-drawing-text-using-custom -pixels/22881391 # 22881391) könnte von Interesse sein. Es wird erläutert, wie Sie mit normaler Zeichnung (GDI + oder was auch immer) eine Vorlage erstellen können, aus der Sie dann die Pinselpixel auswählen. Auf diese Weise können Sie alle grafischen Grundelemente, einschließlich sogar Schriftarten verwenden. – TaW
** ** ** ** ** ** zu meiner Antwort hinzugefügt. – Spektre