Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 如何更改图像的颜色,并且仍然由代码重新确认?_Visual Studio 2010_Image_Vba - Fatal编程技术网

Visual studio 2010 如何更改图像的颜色,并且仍然由代码重新确认?

Visual studio 2010 如何更改图像的颜色,并且仍然由代码重新确认?,visual-studio-2010,image,vba,Visual Studio 2010,Image,Vba,这是我第一次在这里问问题,所以请客气一点 这是我在VisualBasic2010中制作的一个小游戏。我有一个图像,当点击时,会变暗。我需要它被代码识别为与原始图像相同 下面是使图像变暗的代码: Sub WaterDarken(ByVal picTarget As PictureBox) Dim pic As New Bitmap(picTarget.Image) Dim intRed As Integer Dim intGreen As Integer Dim i

这是我第一次在这里问问题,所以请客气一点

这是我在VisualBasic2010中制作的一个小游戏。我有一个图像,当点击时,会变暗。我需要它被代码识别为与原始图像相同

下面是使图像变暗的代码:

Sub WaterDarken(ByVal picTarget As PictureBox)
    Dim pic As New Bitmap(picTarget.Image)
    Dim intRed As Integer
    Dim intGreen As Integer
    Dim intBlue As Integer
    For x As Integer = 0 To picTarget.Image.Width - 1
        For y As Integer = 0 To picTarget.Image.Height - 1
            Dim intDarkenedColor As Color = pic.GetPixel(x, y)
            If intDarkenedColor.R - 50 <= 255 And intDarkenedColor.R - 50 >= 0 Then
                intRed = intDarkenedColor.R - 50
            Else
                intRed = 0
            End If
            If intDarkenedColor.G - 50 <= 255 And intDarkenedColor.G - 50 >= 0 Then
                intGreen = intDarkenedColor.G - 50
            Else
                intGreen = 0
            End If
            If intDarkenedColor.B - 50 <= 255 And intDarkenedColor.B - 50 >= 0 Then
                intBlue = intDarkenedColor.B - 50
            Else
                intBlue = 0
            End If
            intDarkenedColor = Color.FromArgb(225, intRed, intGreen, intBlue)
            pic.SetPixel(x, y, intDarkenedColor)
        Next
    Next
    picTarget.Image = pic
End Sub
Sub-WaterDarken(ByVal PictTarget作为PictureBox)
将图片变暗为新位图(PictTarget.Image)
以整数形式输入
绿色整数
蓝色整数
对于x作为整数=0的PictTarget.Image.Width-1
对于y,作为整数=0到PictTarget.Image.Height-1
Dim intDarkenedColor As Color=pic.GetPixel(x,y)
如果intDarkenedColor.R-50=0,则
intRed=intdarkendcolor.R-50
其他的
intRed=0
如果结束
如果intDarkenedColor.G-50=0,则
intGreen=intdarkendcolor.G-50
其他的
intGreen=0
如果结束
如果intDarkenedColor.B-50=0,则
intBlue=intDarkenedColor.B-50
其他的
intBlue=0
如果结束
intDarkenedColor=Color.FromArgb(225,intRed,intGreen,intBlue)
图.设置像素(x、y、intDarkenedColor)
下一个
下一个
picTarget.Image=pic
端接头
下面是将原始图像与变暗图像进行比较的代码:

  Function IsDarkened(ByRef source As Image, ByRef darkenedSource As Image) As Boolean
    Dim pic As New Bitmap(source)
    Dim pic2 As New Bitmap(darkenedSource)
    Dim intRed As Integer
    Dim intGreen As Integer
    Dim intBlue As Integer
    For x As Integer = 0 To pic.Width - 1
        For y As Integer = 0 To pic.Height - 1
            Dim darkened As Color = pic.GetPixel(x, y)
            If darkened.R - 50 <= 255 And darkened.R - 50 >= 0 Then
                intRed = darkened.R - 50
            Else
                intRed = 0
            End If
            If darkened.G - 50 <= 255 And darkened.G - 50 >= 0 Then
                intGreen = darkened.R - 50
            Else
                intGreen = 0
            End If
            If darkened.B - 50 <= 255 And darkened.B - 50 >= 0 Then
                intBlue = darkened.B - 50
            Else
                intBlue = 0
            End If
            darkened = Color.FromArgb(255, intRed, intGreen, intBlue)
            pic.SetPixel(x, y, darkened)
        Next
    Next
    For x = 0 To pic.Width - 1
        For y = 0 To pic.Height - 1
            If pic.GetPixel(x, y) <> pic2.GetPixel(x, y) Then
                Return False
            End If
        Next
    Next
    Return True
End Function
函数被标记为布尔值(ByRef source作为图像,ByRef DackedSource作为图像)
将图片变暗为新位图(源)
将pic2变暗为新位图(变暗源)
以整数形式输入
绿色整数
蓝色整数
对于x,整数=0到图片宽度-1
对于y,整数=0到图片高度-1
变暗为Color=pic.GetPixel(x,y)
如果变暗,R-50=0,则
intRed=变暗。R-50
其他的
intRed=0
如果结束
如果变暗。G-50=0,则
intGreen=变暗。R-50
其他的
intGreen=0
如果结束
如果变暗。B-50=0,则
intBlue=变暗。B-50
其他的
intBlue=0
如果结束
变暗=颜色。来自argb(255,整数红色,整数绿色,整数蓝色)
图.设置像素(x,y,变暗)
下一个
下一个
对于x=0至图片宽度-1
对于y=0至图片高度-1
如果pic.GetPixel(x,y)pic2.GetPixel(x,y),那么
返回错误
如果结束
下一个
下一个
返回真值
端函数
然而,有些东西不起作用,图像也没有被注意到。 这一直困扰着我一段时间。如果你们中有人能帮忙,请帮忙!
谢谢。

当您使用Color.FromArgb()时,您将像素设置为两个不同的alpha值:

intDarkenedColor=Color.FromArgb(225,intRed,intGreen,intBlue)

vs

变暗=颜色。从argb(255、intRed、intGreen、intBlue)


相同的RGB但不同的不透明度总是会导致不同的图像。

Oops!我总是把225和255混在一起。我想是轻度阅读障碍,好吧。我修正了225对255的问题,但IsDaked在第一次出现时仍然返回false。。。我不知道为什么!好吧,看来我找错人了。我用另一种方法做的。