کسی مشکل این برنامه رو میدونه -- حرفه ای ها

i_lover3000

Member
با عرض سلام خدمت دوستان عزیز


بازم به یه مشکل دیگه برخوردم

برنامه دو تا رسم تو صفحه می کشه که رسم سمت چپ درسته اما رسم سمت راست ادامش میره پایین صفحه و قابل دیدن نیست
 

پیوست ها

  • Rasm.rar
    1.1 کیلوبایت · بازدیدها: 3

the_king

مدیرکل انجمن
کد برنامه را ویرایش کردم :
کد:
Private Sub Command1_Click()
    Unload Me
End Sub

Private Sub Form_Activate()
    Me.ScaleMode = vbPixels
    Me.AutoRedraw = True
    a = Me.ScaleWidth - 1
    b = Me.ScaleHeight - 1
    c = b / a
    d = a / b
    While i < a
        Line (i, 0)-(a, i * c), RGB(0, 255, 0)
        i = i + 13
    Wend
    i = 0
    While i < b
        Line (0, i)-(i * d, b), RGB(0, 255, 0)
        i = i + 13 * c
    Wend
End Sub

مورد اول :
ترسیم های گرافیکی را با واحد Pixel انجام بدید و نه Twip که واحد پیشفرض ویژوال بیسیک است.
از ScaleWidth و ScaleHeight برای این منظور استفاده می شود.

مورد دوم :
ترسیم گرافیکی در ویژوال بیسیک دو حالت متفاوت داره، با AutoRedraw فعال و غیر فعال.
در حالت عادی AutoRedraw غیر فعال است و ترسیم شما فقط روی نمایشگر رسم می شود ولی در حافظه فرم ثبت نمیشه
به همین دلیل اگر به هر علتی فرم ترسیم شده Refresh بشه، قسمت Refresh شده به حالت عادی برمی گرده و ترسیم ها
فراموش می شوند. مثلا وقتی فرم دیگری روی فرم ما را بپوشاند، وقتی فرم بالایی کنار برود ترسیم های شما دیگر
وجود ندارند.

برعکس وقتی AutoRedraw فعال باشد، اول ترسیم ها در حافظه فرم ثبت می شوند و سپس روی صفحه نمایشگر
نمایش داده می شود. به همین دلیل تا زمانی که خودمان فرمانی ندهیم پاک نمی شوند.
مورد دوم بایستی در ترسیم شما بکار بروند، چون شما زمانی دارید در فرم ترسیم انجام می دهید که فرم بصورت کامل
نمایش داده نشده، پس احتمال از دست رفتن ترسیم ها با AutoRedraw غیر فعال وجود دارد.

مورد سوم :
صفحه مانیتور مربع که نیست، نسبت طول به عرض صفحه را رعایت نکرده بودید.
 

جدیدترین ارسال ها

بالا