SetPixel и GetPixel. Одна точка закрашивает другую, но не должна - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Задача: нарисовать прямую заданной толщины с полоской в 1 пиксель по середине. Как бы не проблема, но накидав код, обнаружил, что GetPixel не срабатывает. Прошу найти ошибку.
Листинг программы
  1. Sub установить_точку(ByVal x As Integer, ByVal y As Integer, ByVal bmp As Bitmap)
  2. Dim a As Integer = 2
  3. For i = -a To a
  4. For j = -a To a
  5. If x + i < PictureBox1.Width And x + i > 0 And y + j < PictureBox1.Height And y + j > 0 Then
  6. If Not bmp.GetPixel(x + i, y + j) = Color.Red and Not bmp.GetPixel(x + i, y + j) = Color.Black Then
  7. If i = 0 And j = 0 Then
  8. bmp.SetPixel(x + i, y + j, Color.Red)
  9. Else
  10. bmp.SetPixel(x + i, y + j, Color.Black)
  11. End If
  12. End If
  13. End If
  14. Next
  15. Next
  16. End Sub
Листинг программы
  1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2. bm = New Bitmap(PictureBox1.Width, PictureBox1.Height)
  3. установить_точку(50, 50, bm)
  4. установить_точку(52, 52, bm)
  5. PictureBox1.Image = bm
  6. End Sub
Результат: одна точка закрашивает другую

Решение задачи: «SetPixel и GetPixel. Одна точка закрашивает другую, но не должна»

textual
Листинг программы
  1.   Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
  2.     Dim blackPen As New Pen(Color.FromArgb(255, 0, 0, 0), 1)
  3.     Dim greenPen As New Pen(Color.FromArgb(255, 0, 255, 0), 10)
  4.     greenPen.Alignment = PenAlignment.Center
  5.  
  6.     ' Draw the line with the wide green pen.
  7.     e.Graphics.DrawLine(greenPen, 10, 100, 100, 50)
  8.  
  9.     ' Draw the line with the thin black pen.
  10.     e.Graphics.DrawLine(blackPen, 10, 100, 100, 50)
  11.   End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы