2015-04-25 1 views
0

У меня есть картинка, и вам нужно будет нарисовать один красный пиксель в заданной координате. Этот пиксель будет перемещаться, и когда я назначу новую позицию, старая позиция будет удалена, так что только один пиксель будет красным в любой момент времени. Если возможно, было бы неплохо, чтобы этот пиксель был прозрачным на 50%.Перемещение точки на картинке в vb.net

Самое главное, что он должен быть быстрым. Он просто используется для отображения текущей позиции, обработанной на изображении, поэтому крайне важно, чтобы она не замедляла основную программу.

Можно ли это сделать? Благодаря

+0

использовать событие Paint, чтобы нарисовать точку. Когда вы переместите его, вызовите Invalidate(), чтобы заставить перерисовать. Имейте в виду, что вам, вероятно, придется обратить внимание на свойство SizeMode, чтобы выяснить, где рисовать точку, это просто, когда вы используете SizeMode = Normal. –

ответ

1

В дополнение к комментарий Ганса:

Dim currentPoint As Point = Point.Empty 
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click 
    ' Clear previous pixel 
    Dim invalidRect As Rectangle = New Rectangle(currentPoInteger.X,currentPoInteger.Y, 1, 1) 
    pictureBox1.Invalidate(invalidRect) 

    ' Move to next point some how 
    currentPoint.X = currentPoint.X + 1 

    ' Invalidate to draw new pixel 
    invalidRect = New Rectangle(currentPoInteger.X, currentPoInteger.Y, 1, 1) 
    pictureBox1.Invalidate(invalidRect) 
End Sub 

Private Sub pictureBox1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles pictureBox1.Click 
    If e.ClipRectangle.Contains(currentPoint) Then 
     e.Graphics.FillRectangle(Brushes.Red, currentPoInteger.X, currentPoInteger.Y, 1, 1) 
    End If 
End Sub