vb.net中的动态颜色选择器

时间:2014-09-01 15:00:06

标签: vb.net

我有一个颜色选择器,我在MouseMove而不是Click事件的图片上使用,以便允许颜色“在运行中”显示,但是当我离开边界时图像,我收到错误,无法想到处理它的最佳方法。

Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
        If isWithin(DirectCast(sender, PictureBox), New Point(e.X, e.Y)) And e.Button = Windows.Forms.MouseButtons.Left Then
            Dim bmptmp As New Bitmap(Me.PictureBox1.Image, Me.PictureBox1.Width, Me.PictureBox1.Height)
            Dim clrtmp As Color = bmptmp.GetPixel(e.X, e.Y) '<--- error here
            ...
            ...
        End If
End Sub

我编写了isWithin函数并将其添加到上面If作为一种可能的检查方式,但这似乎不起作用:

Public Function isWithin(pic As PictureBox, pnt As Point)
    Dim rct1 As New Rectangle(pic.Top, pic.Left, pic.Width, pic.Height)
    Dim rct2 As New Rectangle(pnt.X - 1, pnt.Y - 1, 1, 1)
    Return rct1.IntersectsWith(rct2)
End Function

我收到的错误是

An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in System.Drawing.dll - Additional information: Parameter must be positive and < Height

(如果我走得太远,则为< Width)。我认为这是因为e.Xe.Y不再大于0或小于高度或宽度(这是我尝试使用isWithin函数检查的)< / p>

1 个答案:

答案 0 :(得分:0)

当我输入问题时想出来,但我想仍然会添加它。将其封装在Try... Catch ex as Exception... End Try中,然后就可以了。没有必要真正处理错误,因为它是一个预期的错误,只是我邋and并从VBA思想列车来到它(“做......或者不做。没有尝试。” - Yoda&amp; VBA)