-1

我的函数中有一个 picbox 存储

图像作为位图,

我现在需要一个可以

当我将鼠标移到它上面时,找出任何给定像素的颜色 RGB 分量

我该怎么做才能得到这个?


我已成功在选定的文本框中显示 RGB 和像素,但是当我将鼠标移出图片框的一侧时,出现了错误消息:

参数必须为正且 < 宽度。参数名称:x

我尝试使用 If eX > 300 Then eX = 300 但它说“eX”是只读的

我的代码当前看起来像这样:

    If pixBox1.Image Is Nothing Then Exit Sub
    txtColourPixel.Text = String.Format("x,y = {0},{1}; Color={2}", e.X, e.Y, DirectCast(pixBox1.Image, Bitmap).GetPixel(e.X, e.Y).ToString)
4

3 回答 3

1

你可以这样做:

更新:有时移动处理程序会给出实际图像之外的坐标。Oned 可以处理这个问题,或者只是忽略:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim ofd As New OpenFileDialog
    ofd.ShowDialog()
    PictureBox1.ImageLocation = ofd.FileName
End Sub

Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
    If PictureBox1.Image Is Nothing Then Exit Sub
    Try
        TextBox1.Text = String.Format("x,y = {0},{1}; Color={2}", e.X, e.Y, DirectCast(PictureBox1.Image, Bitmap).GetPixel(e.X, e.Y).ToString)
    Catch ex As ArgumentOutOfRangeException
        ' this can happen, we just swallow it and show an error text
        TextBox1.Text = "out of bounds"
    End Try
End Sub

GetPixel是你想要的方法。

于 2012-11-30T14:32:35.917 回答
0

向鼠标移动事件添加处理程序,以获取鼠标移动时的 x、y 位置。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mousemove.aspx

用于Bitmap.GetPixel检索该位置的颜色。

http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.getpixel.aspx

于 2012-11-30T14:33:29.193 回答
0

您可以使用 Bitmap.GetPixel 来确定像素颜色。 http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.getpixel.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

然后使用 Color 的 R、G 和 B 分量得到 R、G abd B 值:http: //msdn.microsoft.com/en-us/library/system.drawing.color.r.aspx

于 2012-11-30T14:37:05.393 回答