Рисование линии без использования метода DrawLine
Вот мой код, и я хочу реализовать алгоритм DDA без использования метода drawLine в C# . Я пытался использовать метод PutPixel, но он не работал. В моем окне ничего нет. Есть ли способ нарисовать линию без использования метода drawLine в C#?
private void Form1_Paint(object sender, PaintEventArgs e)
{
grafik = e.Graphics;
DDACiz(ilk.X, ilk.Y, ikinci.X, ikinci.Y, grafik, Color.DarkRed);
}
void PutPixel(Graphics g, int x, int y, Color c) // sadece bir pixel icin
{
System.Drawing.Bitmap bm = new System.Drawing.Bitmap(10, 10);
bm.SetPixel(0, 0, Color.DarkRed);
g.DrawImageUnscaled(bm, x, y);
}
void DDACiz(int x1, int y1, int x2, int y2,Graphics grafik, Color renk)
{
int PikselSayisi;
int dx, dy;
float x, xFark;
float y, yFark;
dx = x2 - x1;
dy = y2 - y1;
PikselSayisi = Math.Abs(dx) > Math.Abs(dy) ? Math.Abs(dx) : Math.Abs(dy);
xFark = (float)dx / (float)PikselSayisi;
yFark = (float)dy / (float)PikselSayisi;
x = (float)x1;
y = (float)y1;
while (PikselSayisi!=0)
{
PutPixel(grafik,(int)Math.Floor(x + 0.5F),(int) Math.Floor(y + 0.5f),renk);
x += xFark;
y += yFark;
PikselSayisi--;
}
}
}
}
1 ответ
Здесь нет Graphics.DrawPoint
метод, поэтому нарисовать один пиксель с Graphics
объект, который вам нужно использовать Graphics.FillRectangle
+ Изменить
void PutPixel(Graphics g, int x, int y, Color c) // sadece bir pixel icin
{
System.Drawing.Bitmap bm = new System.Drawing.Bitmap(10, 10);
bm.SetPixel(0, 0, Color.DarkRed);
g.DrawImageUnscaled(bm, x, y);
}
в
void PutPixel(Graphics g, int x, int y, Color c) // sadece bir pixel icin
{
g.FillRectangle(Brushes.DarkRed, x, y, 1, 1);
}
или если вы хотите использовать Color
с:
void PutPixel(Graphics g, int x, int y, Color c) // sadece bir pixel icin
{
using (SolidBrush brush = new SolidBrush(c) )
g.FillRectangle(brush , x, y, 1, 1);
}
Вы также можете использовать свой подход к рисованию растрового изображения, но вы должны сделать это либо 1x1
пикселей в ширину или убедитесь, что он прозрачный, а также использовать CompositingMode.SourceOver
,
Написание метода рисования линий - интересное упражнение; гораздо сложнее, чем кажется и действительно тяжело для PenWidths
Кроме как 1.0
не говоря уже о альфа-каналах, кроме полностью непрозрачных..