none
[vb2008]圖片顏色反轉的效能 RRS feed

  • 問題

  • 參考蹂躪大大部落格的顏色反轉的文章,作出了效果,但是處理一張1920x1080的BMP圖快要10秒
    有方法去改善效能嗎?以下是小弟程式碼:
        Private Sub Button28_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button28.Click
            PictureBox1.Image = Nothing
            Try
                PictureBox1.Image = Clipboard.GetData(System.Windows.Forms.DataFormats.Bitmap)
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

        Private Function GetInvertBitmap(ByVal file As Bitmap) As Bitmap
            Dim bmp As Bitmap = New Bitmap(file)
            For x As Integer = 0 To bmp.Width - 1
                For y As Integer = 0 To bmp.Height - 1
                    Dim color As Color = bmp.GetPixel(x, y)
                    bmp.SetPixel(x, y, color.FromArgb(255 - color.R, 255 - color.G, 255 - color.B))
                Next
            Next
            Return bmp
        End Function
    拜託指導一下,感恩
    2010年3月13日 上午 04:47

解答

所有回覆

  • 參考蹂躪大大部落格的顏色反轉的文章,作出了效果,但是處理一張1920x1080的BMP圖快要10秒
    有方法去改善效能嗎?以下是小弟程式碼:
        Private Sub Button28_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button28.Click
            PictureBox1.Image = Nothing
            Try
                PictureBox1.Image = Clipboard.GetData(System.Windows.Forms.DataFormats.Bitmap)
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

        Private Function GetInvertBitmap(ByVal file As Bitmap) As Bitmap
            Dim bmp As Bitmap = New Bitmap(file)
            For x As Integer = 0 To bmp.Width - 1
                For y As Integer = 0 To bmp.Height - 1
                    Dim color As Color = bmp.GetPixel(x, y)
                    bmp.SetPixel(x, y, color.FromArgb(255 - color.R, 255 - color.G, 255 - color.B))
                Next
            Next
            Return bmp
        End Function
    拜託指導一下,感恩

    補上顏色反轉的程式碼
    Private Sub Button32_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button32.Click
            Me.PictureBox2.Image = GetInvertBitmap(PictureBox1.Image)
        End Sub
    2010年3月13日 上午 04:48
  • Hi,

    我上面只是記錄一下處理概念
    要加快處理速度的話
    可參考


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 落跑羊 2010年3月13日 上午 05:41
    2010年3月13日 上午 05:09
    • 已標示為解答 落跑羊 2010年3月13日 上午 05:41
    2010年3月13日 上午 05:22
  • 感謝蹂躪大大與JOE大大的回覆,
    處理速度快好多,與小畫家的一樣.
    感恩感恩(拜)~
    2010年3月13日 上午 05:47