تبلیغات


لطفا کمی صبر کنید...
وبلاگ به خاطر حجم بسیار زیاد مطالب کمی سنگین شده است.
 شاید بیش از یک دقیقه طول بکشد.

(بستن)

آموزش ویژوال بیسیک 6 از مقدماتی تا پیشرفته و حرفه ای - طیف رنگها (بسیار زیبا)
آموزش ویژوال بیسیک 6 از مقدماتی تا پیشرفته و حرفه ای
زکات علم آموختن است.

آرشیو موضوعی

لینکدونی

آرشیو

لینکستان

آمار در میهن بلاگ

  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :

سخن مدیر

استفاده از مطالب این وبلاگ فقط با ذکر منبع بلامانع میباشد.

تبادل بنر تبلیغاتی تبادل لوگوی وبلاگ

کلاسهای آموزش برنامه نویسی :

VB6 - VB.NET - C - C# - ASP - ASP.NET - PHP - SQL

به صورت خصوصی در مشهد با قیمت جلسه ای 15 هزار تومان - (حرفه ای شوید)

جهت کسب اطلاعات بیشتر با شماره 09364222771 تماس بگیرید

نظــــر = شخصیّــت Smiley


مرجع كامل مستند

طیف رنگها (بسیار زیبا)

من برای نوشتن این كد و بدست آوردن راهی برای تاریك یا روشن شدن رنگها چیزی حدود 10 تا 15 ساعت وقت گذاشتم و شكر خدا بالاخره تونستم راه حلش رو بدست بیارم. اونچه كه برای من سخت و دشوار بود طیف تمام رنگهای پر رنگ به تاریك (چپ كلیك درون فرم) و همچنین طیف تمام رنگهای پر رنگ به روشن (راست كلیك) بود. یعنی هر چی كه به سمت پایین فرم میاییم رنگها تیره تر یا روشن تر بشن. اینم چیزه ساده ای به نظر میرسه امّا اینطور نیست. حالا ممكنه با یك نگاه به كد زیر بگید: بابا اینكه دیگه كاری نداره كه...! بلــــــه معمّا چون حل شود آسان شود.

اساسه كار این كد چیه؟

طیف رنگها به صورت: قرمز » سبز » آبی » قرمز هست. یعنی از قرمز شروع میشه و به سمت سبز حركت میكنه و بعد، از سبز به سمته آبی و بعد از آبی به سمت قرمز حركت میكنه.



همون طور كه ملاحظه میكنید، ترسیم هر سطر برنامه، از شش مرحله (Level) تشكیل شده:

مرحله اول: اضافه شدن رنگ سبز RGB(R ,+G ,B )
مرحله دوم: كم شدن رنگ قرمز RGB(-R ,G ,B )
مرحله سوم: اضافه شدن رنگ آبی RGB(R ,G ,+B )
مرحله چهام: كم شدن رنگ سبز RGB(R ,-G ,B )
مرحله پنجم: اضافه شدن رنگ قرمز RGB(+R ,G ,B )
مرحله ششم: كم شدن رنگ آبی RGB(R ,G ,-B )

اینا مراحل ترسیم یك سطر بودند و چون در هر مرحله 255 رنگ ترسیم میشه پس در تمام سطر باید 1530 رنگ ترسیم بشه (6*255=1530)؛ به همین خاطر من عرض فرم رو 1530 در نظر گرفتم ولی طول فرم رو همون 255 در نظر گرفتم چون رنگهای ما یا تاریك میشن یا روشن میشن و برای اینكار نیاز به 255 رنگ داریم (اعداد كوچكتر = رنگ تاریك‌تر، اعداد بزرگتر = رنگ روشن‌تر).

یك پروژه جدید باز كنید و كد زیر رو تو قسمت جنرال فرمتون كپی كنید :
 

Dim intRGB(3) As Single, intAddNum As Single
Dim intLevel As Integer
Dim intColorLevel1 As Integer, intColorLevel2 As Integer
Private Sub Form_Load()
    Me.DrawWidth = 2
    Me.AutoRedraw = True
    Me.Caption = "Click Me."
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    On Error Resume Next
    
    Me.ScaleWidth = 1530
    Me.ScaleHeight = 255
    'Me.Cls
    intAddNum = 1
    intLevel = 1
    
    If Button = vbLeftButton Then
        intColorLevel1 = 255
        intColorLevel2 = 0
        intRGB(1) = 255
        intRGB(2) = 0
        intRGB(3) = 0
        Y = 0
    ElseIf Button = vbRightButton Then
        intColorLevel1 = 255
        intColorLevel2 = 0
        intRGB(1) = 255
        intRGB(2) = 0
        intRGB(3) = 0
        Y = 255
    End If
    
    For Y = 0 To Me.ScaleHeight
        For X = 0 To Me.ScaleWidth
            
            Select Case intLevel
                Case 1:
                    intRGB(2) = intRGB(2) + intAddNum
                    If intRGB(2) >= intColorLevel1 Then intLevel = 2
                Case 2:
                    intRGB(1) = intRGB(1) - intAddNum
                    If intRGB(1) <= intColorLevel2 Then intRGB(1) = Abs(intRGB(1)): intLevel = 3
                Case 3:
                    intRGB(3) = intRGB(3) + intAddNum
                    If intRGB(3) >= intColorLevel1 Then intLevel = 4
                Case 4:
                    intRGB(2) = intRGB(2) - intAddNum
                    If intRGB(2) <= intColorLevel2 Then intRGB(2) = Abs(intRGB(2)): intLevel = 5
                Case 5:
                    intRGB(1) = intRGB(1) + intAddNum
                    If intRGB(1) >= intColorLevel1 Then intLevel = 6
                Case 6:
                    intRGB(3) = intRGB(3) - intAddNum
                    If intRGB(3) <= intColorLevel2 Then intRGB(3) = Abs(intRGB(3))
            End Select
            
            Me.PSet (X, Y), RGB(intRGB(1), intRGB(2), intRGB(3))
            
        Next X
        DoEvents
        
        If Button = vbLeftButton Then
            intColorLevel1 = intColorLevel1 - 1
            intAddNum = (intColorLevel1 / 256)
            intRGB(1) = intColorLevel1
            intRGB(2) = 0
            intRGB(3) = 0
        ElseIf Button = vbRightButton Then
            intColorLevel2 = intColorLevel2 + 1
            intAddNum = ((255 - intColorLevel2) / 256)
            intRGB(1) = 255
            intRGB(2) = intColorLevel2
            intRGB(3) = intColorLevel2
        End If
        intLevel = 1
        Me.Caption = CStr((Y * 100) \ Me.ScaleHeight) & "%"
    Next Y
    Me.Caption = "Complated."
End Sub

حالا برنامه و اجرا كنید و تو فرمتون راست كلیك كنید بعد از ترسیم تصویر چپ كلیك كنید تا تفاوت دو تصویر و نتیجه 15 ساعت تلاش منو ببینید، شاید به نظرتون ساده یا بی كاربرد بیاد اما واقعاً اینطور نیست. در ضمن سرعت ترسیم تصویر بستگی به CPU كامپیوتر شما داره، برای من كه سریع ترسیم میشه. موفق باشید.


نظــــر بــــدهید...

درباره وبلاگ

بهترین آموزشگاه برنامه نویسی به زبان ویژوال بیسیک 6 از مقدماتی تا پیشرفته و حرفه ای همراه با آموزش آنتی ویروس نویسی حرفه ای و سورس های آماده ویروس
مدیر وبلاگ : امیر امیری

آخرین پست ها

جستجو

نویسندگان

آمار در وبگذر

Page Rank