2007/May/09

คราวนี้เราก็มาวิเคราห์โค้ดกันจริงๆจังๆบ้างนะครับ คราวนี้ผมนำโค้ดการปรับความสว่างมาลองดูกัน อันนี้เขียนด้วย VB6 นะครับ เพราะมีน้องๆที่เริ่มเรียน ยังไม่ได้เรียนC อยู่เยอะเหมือนกัน ก็รุ่นน้องผมเองล่ะ ว่าแล้วก็ไม่เสียเวลา มาดูกันครับ
ก่อนชมสามารถ Download ที่นี่นะครับ


Private Declare Function SetPixelV Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Byte
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long

Private Sub CmdBrightness_Click()
'ตั้งค่าตัวแปรสำหรับความสว่าง คำนวณสี ตำแหน่ง
Dim Brightness As Single
Dim NewColor As Long
Dim x, y As Integer
Dim r, g, b As Integer
'เปลี่ยนค่าเป็นเปอร์เซ็นต์
Brightness = TxtBrightness / 100
'รันลูปภาพทุกพิเซล
For x = 0 To Picture1.ScaleWidth
For y = 0 To Picture1.ScaleHeight
'รับค่าสี
NewColor = GetPixel(Picture1.hDC, x, y)
'ส่งค่า R,G,B values จาก long ไปโดย GetPixel
r = (NewColor Mod 256)
b = (Int(NewColor / 65536))
g = ((NewColor - (b * 65536) - r) / 256)
'เปลี่ยนค่า R,G,B ตาม brightness
r = r * Brightness
b = b * Brightness
g = g * Brightness
'เพื่อความแน่ใจว่าค่ามันจะไม่สูงเกินไป
If r > 255 Then r = 255
If r < 0 Then r = 0
If b > 255 Then b = 255
If b < 0 Then b = 0
If g > 255 Then g = 255
If g < 0 Then g = 0
'เซตpixel ใหม่
SetPixelV Picture1.hDC, x, y, RGB(r, g, b)
Next y
'รีเฟรชมันทุก 10 line (a nice progress bar effect)
If x Mod 10 = 0 Then Picture1.Refresh
Next x
'แล้วก็รีเฟรช
Picture1.Refresh
End Sub
เสร็จ ง่ายใช่มั้ยครับ แต่นี่เป็นโค้ดอย่างง่ายให้ทุกคนเข้าใจลูกเล่นของ Img Process นะครับ ขอบอกว่าจริงๆ Briness แบบที่เร็วๆ อาจจะมีแนวคิดที่ต่างจากนี้ก็ได้นะครับ

edit @ 2007/05/09 17:25:44
ชื่อ: 
เว็บไซต์: 
คอมเมนต์:




smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry
ขอบคุณค่ัะ เข้าใจขึ้นเยอะ
#1  by  +*+*akeha*+*+ At 2008-07-07 05:05, 

<< Home