1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

یه سری آموزش های فوق العاده جالب برای دوستان عزیز

شروع موضوع توسط hector2141 ‏10/9/12 در انجمن Visual Basic

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    اموزش روش های Shut Down

    براي Shut Down كردن سيستم از تابعExitWindowEx استفاده ميشه :

    Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

    پارامتر اول يكي از مقدار هاي زير ميتونه باشه :

    Const EWX_LOGOFF = 0
    Const EWX_SHUTDOWN = 1
    Const EWX_REBOOT = 2
    Const EWX_FORCE = 4

    همش به غير از آخري واضحه.آخري با هر كدوم از بقيه كه تركيب بشه (با Or ) موجب ميشه كه ويندوز برنامه ها رو مجبور به بستن كنه.پارامتر دوم رو هم VbNullString قرار بدين
    .مثال :

    Private Sub Command1_Click()
    ExitWindowsEx EWX_SHUTDOWN or EWX_FORCE, VbNULLString
    End Sub

    توي ويندوز XP اين روش كار نميكنه.براي شات دانون كردن ويندوز بايد از فايل ShutDown.Exe كه توي دايركتوري سيستم هست استفاده كرد.اين فايل واسه Shut Down كردن چند تا پارامتر ميتونه بگيره كه يكيش رو حتما بايد بش بدين :

    -I

    يه واسط كاربري نشون ميده كه توي اون كاربر Options ها رو مشخص ميكنه و بعد OK ميكنه تا سيستم خاموش بشه و اگه اين رو استفاده كردين ديگه نياز به پارامتر ديكه اي نيست .البته اين پارامتر اصلا به كار ما نمياد.ما ميخواهيم به طور اتوماتيك سيستم رو Shut Down كنيم.

    -l

    سيستم Logoff ميشه

    -s

    سيستم Shutdown ميشه.(توي قسمت هاي قبلي هرجا گفتم Shut Down منظورم Restart , Shutdown , Logoff بود)

    -r

    سيستم Restart ميشه.

    -a

    اگه سيستم در حال Shut Down شدن باشه ،اين كار لغو (abort)ميشه.

    -t [Seconds]

    اين براي زمان بكار ميره.يعني اينكه اگه از اين پارامتر استفاده كنين بايد بعدش يه عدد كه معرف ثانيه هستش بنويسين كه اگه اين كارو بكنين يه پنجره مثل اين نشون داده ميشه و سيستم بعد از زماني كه شما تعيين كردين Shut Down ميشه:

    -c "[This is a comment] "

    اگه از پارامتر t استفاده كرده باشين با اين پارامتر (c) ميتونين توي قسمت Message يه پيغام براي كاربر نشون بدين مثل ايني كه من گذاشتم (This is a comment) در ضمن طول اين پيغام حداكثر بايد 127 كاراكتر باشه.


    -f

    مثل مقدار EWX_FORCE توي تابع ExitWindowsEx عمل ميكنه يعني اگه ازش استفاده كنين ويندوز برنامه ها رو مجبور به بستن ميكنه.
    حالا ما براي Shut Down كردن بايد اين فايل رو با پارامتر ها باز كنيم.از تابع Shell استفاده ميكنيم :
    2 تا دكمه يكي cmdShutDown و يكي ديگه cmdAbort درست كنين :

    Private Sub cmdShutDown_Click()
    Shell "Shutdown.exe -r –t 30 –f –c " & """" & "This is a comment" & """"
    End Sub
    Private Sub cmdAbort_Click()
    Shell "Shutdown.exe –a"
    End Sub

    وقتي دكمه cmdShutDown رو بزنين يه پنجره مثل پنجره اي كه عكسش رو گذاشتم ظاهر ميشه و شمارش معكوس از 30 شروع ميشه.اگه به 30 برسه ويندوز رستارت ميشه.اگه دكمه cmdAbort رو بزنين پنجره ي Shut Down بسته ميشه.
    حالا يه كد واسه رستارت در همون لحظه :

    Private Sub cmdShutDown_Click()
    If MsgBox("Are you sure? ",VbCritical + VbYesNo) = VbYes Then
    Shell "ShutDown.exe –r –f –t 0"
    End If
    End Sub
     
  2. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    SendKeys يك يا چند كاركتر يا دكمه هاي كيبرد رو به پنجره ي فعال ارسال ميكنه درست مثل اينكه دكمه هاي كيبرد فشار داده شده باشن.2 تا آرگومان ميگيره كه دومي اختياريه.آرگومان اولي كاراكتر هايي هستن كه ميخواهيم ارسال كنيم مثلا “vb” .واسه دكمه هاي خاص كيبرد مثل HOME ها DELETE و ... بايد اون ها رو توي آكلاد قرار بدين مثلا :
    براي insert از “{INSERT}” يا “{INS}” استفاده ميشه.
    براي end از “{END}” استفاده ميشه.
    براي delete از “{DELETE}” يا “{DEL}” استفاده ميشه.
    براي page down از “{PGDN}” استفاده ميشه.
    براي page up از “{PGUP}” استفاده ميشه.
    براي home از “{HOME}” استفاده ميشه.
    براي علامت چپ از “{LEFT}” استفاده ميشه.
    براي علامت بالا از “{UP}” استفاده ميشه.
    براي علامت راست از “{RIGHT}” استفاده ميشه.
    براي علامت پايين از “{DOWN}” استفاده ميشه.
    براي print screen از “{PRTSC}” استفاده ميشه.
    براي scroll lock از “{SCROLLLOCK}” استفاده ميشه.
    براي break از “{BREAK}” استفاده ميشه.
    براي back space از “{BACKSPACE}” يا“{BS}” يا “{BKSP}” استفاده ميشه.
    براي enter از “{ENTER}” يا "~" (بدون آكلاد) استفاده ميشه.
    براي F1 ، F2 و... هم از “{F1}” ، “{F2}” و ... استفاده ميشه.
    براي escape از “{ESC}” استفاده ميشه.
    براي tab از “{TAB}” استفاده ميشه.
    براي caps lock از “CAPSLOCK” استفاده ميشه.

    واسه نگه داشتنه شدن كليد هاي Control و Alt و Shift به ترتيب از ^ ، % ، + استفاده كنين.مثلا براي كنترل بعلاوه ي v از “^v” استفاده كنين.اگه ميخواهين يكي ازين دكمه ها واسه مجموعه اي از كليد ها مورد استفاده قرار بگيره از پرانتز استفاده كنين مثلا براي كنترل بعلاوه ي vb از “^(vb)” استفاده كنين.براي استفاده همزمان از چند تا ازين كليد ها هم اون ها رو پشت سر هم استفاده كنين مثلا براي شيفت بعلاوه ي كنترل بعلاوه v از “+^v” استفاده كنين.اين كار رو براي دكمه هاي HOME و INSERT و ... هم ميتونين بكنين.مثلا كنترل بعلاوه يHOME ميشه “^{HOME}” .

    آرگومان دوم از نوع Boolean هستش كه بطور پيشفرض False هستش.اگه True باشه وقتي كه كليدي به يك پنجره ارسال ميشه تابع منتظر ميشه تا اون پنجره عمليات فشرده شدن كليد رو براي خودش پردازش كنه بعد كنترل به تابع برميگرده.
     
  3. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    FormatDateTime اين تابع واسه تغيير فرمت زمان و تاريخ به كار ميره.آرگومان اول تاريخ يا زمان مورد نظره .دومي هم فرمت مورد نظر.مقدار بازگشتي با توجه به نوع فرمت و نوع مقداري كه بش داديم فرق ميكنه :

    FormatDateTime(Now(), vbGeneralDate) = 10/5/2005 10:49:07 PM
     
  4. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    برخي اپراتور هاي Visual Basic

    Type Of اپراتور

    اين اپراتور براي تشخيص نوع كنترل به كار مي رود.روش استفاده از ان به شكل زير است

    TypeOf ControlName Is ControlType

    مثال:كنترلي از نوع فايل بوكس رابه تايع زير مي فرستيم يراي تعيين عضو انتخاب شده

    Private Function GetSelectItem(LST as Contol) as String
    if TypeOf lst is listbox then
    GetselectItem=Lst.text:Exit Function
    else :GetselectItem=Lst.FileName:Exit Sub
    End if

    در خط يك تابع با آرگومان يك ليست از نوع كنترل تعريف مي شود خروجي تايپ آف به صورت يك منو مانند تعريف متغيير هنگام كد نويسي ظاهر مي شود كه شما مي توانيد نو ع كنترل خود را از داخل آن انتخاب كنيد.توجه كنيد بين تايپ و آف نبايد فاصله بيفتد واگر نه با خطاي كامپايل مواجه مي شويد.

    DoEvents اپراتور

    اين اپراتور براي ارجاع تمام عملييات به سي پي يو براي انجام مي باشد.اكثرآ از اين اپراتور براي مواقعي استفاده مي گردد كه يك عمليات وقتگير در حال انجام است مانند اعمال افكت روي تصوير و حلقه هاي تكرار طولاني. اين اپراتور در درون حلقه قرار گرفته و كامپايل نمي شود مانند رهنمود ها در پاسكال عمل مي كندوبه سي پي يو مي گويد تمام كارهيت را به صورت يكسان انجام بده واز اولويت ها صرف نظر كن .در برنامه هايي كه يك عمليات در درون يك حلقه هر دور انجام مي شود آكثرآ باعث هنك كردن آن برنامه تا پايان عمليات مي شود.چون برنامه بين واكنش به تكان خوردن موس -جابه جاكردن برنامه يا بزرگ و كوچك كردن برنامه وپردازش روي عمليات مورد نظر(مثلآ كپي فايل)عمليياتي كه داراي اولويت پردازش است را انتخاب مي كند.اين اپراتور در چنين مواقعي بسيار مفيد است وباعث مي شود كاربر گمان نكند كه برنامه هنك كرده و آن را ببندد.مثال:ِ

    For i=0 to list1.listCount -1
    if list1.list(i)<>"" then call Copy(list1.list(i),App.path+"\")
    DoEvents
    Next

    در خط اول حلقه اي از صفر تا تعداد اعناصر موجود در ليست اغازمي شودو در هر درو فايل درون ليست در صورت وجود كپي مي شود .اگر فايل هاي مازياد باشد DoEventsو اپراتور را ننويسيم حتمآ برنامه ما هنك مي كند.بايد ياد آور شد استفاده نابجا و بيش از اندازه اين اپراتور موجب كاهش سرعت برنامه مي شود.ِالبته

    استفاده مي كنندSleepبه نام APIباعث كاركرد زياد وشديد سي پي يو مي شود وبرخي ترجيح مي دهند از آن استفاده نكنند ويه جاي ان از يك

    فرق مي كند. اسليپ باعث ميشود سي پي يو تمام كار هاي در حال اجرا را رها كند وبه مدت زماني كه جلويDoEventsبايد گفت كاركرد اسليپ به طور كلي با

    آن نوشته مي شود به استراحت بپردازد.ِ

    sleep با توجه به زماني كه براش تعيين ميكني در وسط كار برنامه مكث ايجاد ميكنه و در آن زمان هيچ خطي از كد برنامه اجرا نميشه و همان طور كه از اسم تابع .مشخصه برنامه در آن زمان به خواب ميره
    اسليپ زماني كه با محيط خارج از برنامه در ارتباطي خيلي مفيده. چون معمولا وقتي دستوري در وي بي مثل اجراي فلان فايل مدتي طول مي كشد و تو اين مدت دستورات بعدي سريع اجرا مي شوند كه ممكن است نتيجه اش به اجاي فايل بستگي داشته با شه.اسليپ باعث ميشه به ويندوز فرصت بدي ساير دستورات فرستاده شده به خارج برنامه رو اجرا كنه. البته گاهي اوقات هم نميدونيم چند ثانيه مكث كنيم و ممكنه مجبور شيم براي احتياط زمان زيادي مكث كنيم كه سرعت برنامه مياد پايين پس تا مي تونيم از دستورات خود وي بي استفاده كنيم تا بر نامه هاي خارجي.ِ
     
  5. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    فرمت فایل M3U
    چگونه یک فایل PlayList با پسوند M3U بسازیم

    گاهي وقتي عده ي زيادي فايل را در مدیا پلير يا وينمپ باز مي كنيم يك گزينه به نام SavePlaylist
    مي بينيم كه براي ذخيره كردن آن ليست در يك فايل استفاده مي شود.اگر يك برنامه ي پخش صوت يا تصوير باكنترل مديا پلير نيز بنويسيد براي پخش هم زمان چندين فايل به مشكل برخواهيد خورد .درچنين مواقعي مي توانيم با ذخيره ليست در يك فايل ام تري يو وباز كردن آن در كنترل مديا پلير چندين فايل را با هم پخش كرد .شايد شما بتوانيد فايل هايتان را مستقيمآ به ليست مديا پلير احتياج به دانستن فرمت فايل ام تري يو داريدPlayListاضافه كنيد ولي باز هم براي ذخيره

    با اين تابع اين كار را انجام دهيد

    Public Sub SaveList(OutPath As String,Lst as ListBox)
    On Error Resume Next '--------------------------------------------------
    Dim T3 As String, T2, strans As String, L As Single, i As Integer
    T3 = "": T2 = ""
    If Lst.List(1) = "" Then
    strans = MsgBox("File Not Found!", vbCritical)
    Exit Sub '------------------------------------------------------
    End If
    If UCase(Right(OutPath, 3)) <> "M3U" Then Exit Sub
    Open OutPath For Output As #1
    Print #1, "#EXTM3U:"
    For i = 1 To Lst.ListCount '----------------------------
    Print #1, "#EXTNIF:"
    Print #1, Lst.List(i)
    Next i '------------------------------------------------------
    Close #1
    End Sub

    حال براي زخيره كردن فايل هاي صوتي و تصويري موجود در يك ليست تنها به دستور زير نياز داريد

    SaveList "C:\1.M3U",List1
     
  6. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    كتابخانه وسيع Shell

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal_ lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal_ nShowCmd As Long) As Long

    كد هاي زير را هر جا استفاده كنيد جواب مي دهدالبته بهد از اينكه كد بالا را در اولين خط فرم نوشتيد

    Shell "arp"
    Shell "drvspace"
    Shell "drwatson"
    Shell "explorer"براي my document
    Shell "freecell"
    Shell "ftp"براي تنظيم اف تي پي
    Shell "ipconfig"كادر آي پي
    Shell "mplayer"مديا پلير
    Shell "mshearts"
    Shell "nbtstat"
    Shell "netstat"
    Shell "calc"ماشين حساب
    Shell "notepad"نوت پد
    Shell "packager"
    Shell "pbrush"نقاشي
    Shell "ping"
    Shell "regedit"ريجيستري
    Shell "route"روت
    Shell "scandskw"اسكن ديسك
    Shell "scanregw"اسكن رگ
    Shell "setdebug"كخك تري تنظيم ويندوز
    Shell "sigverif"
    Shell "cdplayer"سي دي پلير
    Shell "sndrec32"ضبط صدا
    Shell "sndvol32"تنظيم ولوم صدا
    Shell "sol"همون سول
    Shell "taskman"وضعيت سي پي يو
    Shell "telnet"تلفن
    Shell "vcmui"
    Shell "winfile"
    Shell "winipcfg"
    Shell "winmine"
    Shell "winrep"
    Shell "charmap"كاراكتر مپ
    Shell "winver"
    Shell "write"وورد پد
    Shell "wscript"
    Shell "cleanmgr"كلنر پاك كننده اشغال درايو
    Shell "control"كنترل پنل
    Shell "cvt1"
    Shell "defrag"دفراگمنت
    Shell "drvspace" فضاي خالي ديسك

    اجراي فايل اينترنت با Shell
    shell "Explorer.exe"+" http://www.parsiyanpc.iranblog.com.comن به يك سايت
    shell "explorer.exe"+" maileto:parsiyan-pc@yahoo.com"كادر ارسال ايميل
    shell "explorer.exe"+" yor HTML File.html"كادر اجراي يك فايل اينترنت از حافظه
    shell "explorer.exe"+" file://www.سايت شما.com/11.zip"كادردانلود يك فايل از اينترنت
     
  7. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    تنظيم ابعاد نمايش ويندوز براي يك برنامه اختصاصي

    برنامه هاي سه بعدي از فضا نمي آيند توسط همين وي بي -دلفي واكثرآ سي پلاس پلاس طراحي مي شن وقتي يك بازي سه بعدي روباز مي كنيم ويك دفعه يك صفحه با گرافيكي كه تا حالا نديديم يه صورت زيبا بالا مي آد اكثر ما -بيشتر خودم- خيلي كف ميكنيم كه اين برنامه ها چطور ساخته مي شن-با چي ساخته مي شن

    امروز مي خوام تنظيم ابعاد صفحه نمايش ويندوز رو با ابعاد دلخواه خودمون بگم كه گام اول طراحي سه بعديه اگه بشه شايد مراحل بعديش رو هم بزارم روي سايت كه مونده به ياري شما .بانظراتتون و خدا با توفيقش

    ابتدا متغيير هاي اول فرم

    Dim Dx As New DirectX7
    Dim Dd As DirectDraw4
    Dim clip As DirectDrawClipper

    البته بعد از نوشتن كد بالا به منوي پروژه رفته گزينه ريفرنس رو انتخاب كنيد در منوي باز شده تيك گزينه ي دايركت ايكس 7 رو بزنيد

    تا كد هاتون اجرا بشه روي فرم دابل كلاك كنيد و كد زير رو بنويسيد

    Set Dd = Dx.DirectDraw4Create("")
    Set clip = Dd.CreateClipper(0)
    clip.SetHWnd Me.hWnd
    ' screen mode
    Dd.SetDisplayMode 800, 600, 32, 0, DDSDM_DEFAULT

    بااين كد صفحه نمايش به مد 800*600و حالت 32بايتي ميره
     
  8. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    كلاس چيست؟؟؟؟

    كلاس يك مجموعه اي از كدهاست كه شبيه به يك كنترل هستند فقط شكل ظاهري و طراحي ندارند
    كلاس ها شي هستند - يعني خاصيت دارند -كلاس ها مي توانند داخل خود پردازه يا تابع محلي وسراسري داشته باشند
    كلاس به چه دردي مي خورد-كلاسها از تكرار كدها جلو گيري مي كنند -كلاس ها خوانايي برنامه را افزايش مي دهندوغيره
    كلاس ها مي توانند به صورت خودكار خود را مقدار دهي كنند-يك ماژول كلاس ايجاد كنيد وكدهاي زير را در آن كپي كنيد

    تعريف يك خاصيت در كلاس

    '-----------Set Property Information---------

    Public Poperty Let CWidth( Value As Integer)
    CWidth=Value
    End Property

    '------------Get Property Information--------------

    Public Property Get CWidth() As Integer
    CWidth=CForm.Width
    End Property

    دستور اول خاصيت را مقدار دهي مي كند با مقداري كه كار بر فرستاده
    دستور دوم براي دادن مقدار براي كابر است .البته هر كدام از اين دستورات را مي توان به صورت محلي استفاده كرد
    وي بي با كلاس ها مانند يك نوع جديد رفتار مي كند يعني شما براي استفاده از يك كلاس در سطح فرم بايد يك متغير از
    نوع كلاس تعريف كنيد .تعرف يك متغيير محلي در سطح فرم

    Private CForm As Form

    تمام متغيير ها وتوابع وپردازه ها وحتي نام خود كلاس را با سي آغاز كنيد تا معلوم شود مربوط به يك كلاس است
    تعرف يك پردازه سراسري در كلاس

    Private Sub CSetInfo(Frm As Form)
    Set Form=Frm
    End Sub

    اگر تمام كدها بالا را درست در يك ماژول كلاس كپي كنيد اكنون نوبت استفاده از كدهاي بالاست
    در خط اول فرم يك متغيير از نوع نام كلاس تعريف كنيد.بدين صورت

    Dim Calss As Class1
    Private Sub Form_Resiz()
    Me.Caption="Form1.Width: "& Class.With
    End Sub
     
  9. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    چگونه ساعت ديجيتال بسازيم

    كوتاهترين راه براي ساخت يك ساعت روش زير است يك Picturebox به فرم اضافه كنيد

    Private Sub Form_Load()
    Static Score As Long
    Counter.Show
    DoEvents
    Score = 0
    For I = 1 To 1265
    DisplayNumber 10, Score
    Score = I
    DoEvents
    Next
    End Sub'-------------------------------------------------------------------
    Private Sub DisplayNumber(DisplayWidth As Integer, TheNumber As Long)
    Dim DisplayString As String, Zeros As Integer, GraphicsHeight As Single
    Dim DigitValue As Integer, NumPosition As Integer
    '--------------------Start Time---------------
    GraphicsHeight = Picture1.ScaleHeight / 2
    Zeros = DisplayWidth - Len(Trim(TheNumber))
    For I = 0 To Zeros - 1
    DisplayString = DisplayString & "0"
    Next
    DisplayString = DisplayString & Trim(Str(TheNumber))
    For I = 0 To DisplayWidth - 1
    DigitValue = Val(Mid(DisplayString, I + 1, 1))
    If DigitValue = 0 Then NumPosition = 10 Else NumPosition = DigitValue _
    Counter.PaintPicture Picture1.Image, I * (Picture1.ScaleWidth / 10), 0, _
    Picture1.ScaleWidth / 10, Picture1.ScaleHeight / 2, (NumPosition - 1) _
    * (Picture1.ScaleWidth / 10), GraphicsHeight, Picture1.ScaleWidth / 10, Picture1.ScaleHeight / 2
    Next
    End Sub

    در كد بالا به دلايلي فرم خارج نمي شود بايد يك دكمه براي خروج از فرم تنظيم كنيدودر كد كليك آن بنوسيد
    End
     
  10. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    چطور ميشه يك عكس رو روشنتر كرد يا پر رنگ
    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()
    'variables for brightness, color calculation, positioning
    Dim Brightness As Single
    Dim NewColor As Long
    Dim x, y As Integer
    Dim r, g, b As Integer
    'change the brightness to a percent
    Brightness = TxtBrightness / 100
    'run a loop through the picture to change every pixel
    For x = 0 To Picture1.ScaleWidth
    For y = 0 To Picture1.ScaleHeight
    'get the current color value
    NewColor = GetPixel(Picture1.hDC, x, y)
    'extract the R,G,B values from the long returned by GetPixel
    r = (NewColor Mod 256)
    b = (Int(NewColor / 65536))
    g = ((NewColor - (b * 65536) - r) / 256)
    'change the RGB settings to their appropriate brightness
    r = r * Brightness
    b = b * Brightness
    g = g * Brightness
    'make sure the new variables aren't too high or too low
    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
    'set the new pixel
    SetPixelV Picture1.hDC, x, y, RGB(r, g, b)
    'continue through the loop
    Next y
    'refresh the picture box every 10 lines (a nice progress bar effect)
    If x Mod 10 = 0 Then Picture1.Refresh
    Next x
    'final picture refresh
    Picture1.Refresh
    End Sub

    احتياج داريد كه متن درون آن به درصد برابر ميزان روشنايي استTxtBrightnessيك كادر متن به نامCmdBrightnessحال كردين با توضيحات كامل براي كد بالا يك كامند به نام