Я пытаюсь извлечь цвета пикселей из изображений, но он получает только цвета из ранее загруженного изображения - PullRequest
1 голос
/ 05 июля 2011
Public Class Form1
Dim x As Integer, y As Integer
Dim img As Bitmap
Dim pixelColor As Color

Public Function getpixel(ByVal x As Integer, ByVal y As Integer) As Color

End Function


Private Sub find_img_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles find_img.Click
    open_img.ShowDialog()
    img_dsp.Text = open_img.FileName()
    img_loc.Text = open_img.FileName
    img_dsp.ImageLocation = img_dsp.Text
    img_dsp.Refresh()
    img = (img_dsp.Image)
    img_dsp.Refresh()
    x = 1
    y = 1
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    pixelColor = img.GetPixel(x, y)
    Label1.Refresh()
    img_dsp.Refresh()
    Label1.ForeColor = pixelColor
End Sub

Конечный класс

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

1 Ответ

2 голосов
/ 05 июля 2011

Я собираюсь предположить, что img_dsp - это PictureBox или его производная.В этом случае после установки свойства ImageLocation вам необходимо вызвать метод Load ().Метод img_Click должен выглядеть следующим образом:

Private Sub find_img_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles find_img.Click
    open_img.ShowDialog()
    img_dsp.Text = open_img.FileName
    img_loc.Text = open_img.FileName
    img_dsp.ImageLocation = img_dsp.Text
    img_dsp.Load()
    img = img_dsp.Image
    x = 1
    y = 1
End Sub

В качестве альтернативы, вы можете сначала загрузить растровое изображение (например, изображение бикини), а затем установить изображение PictureBox из этого:

Private Sub find_img_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles find_img.Click
    open_img.ShowDialog()
    img_dsp.Text = open_img.FileName
    img_loc.Text = open_img.FileName
    img = New Bitmap(open_img.FileName)
    img_dsp.Image = img
    x = 1
    y = 1
End Sub
...