PDA

View Full Version : خاصيت auto redraw



mohsenaminzare
جمعه 24 فروردین 1386, 19:29 عصر
خاصیت auto redraw فرم برای چیست ؟

javady_joon
یک شنبه 13 مهر 1393, 12:54 عصر
میشه اساتید جواب بدین؟

Mori Bone
یک شنبه 13 مهر 1393, 13:15 عصر
موقعی که شما رو فرم مثلا با متد line یا pset یا circle ویا ... پیکسل های فرم رو روشن می کنید، این پیسکل ها تا موقعی می توانند رنگی یا روشن بمانند که هیچ پنجره ی دیگری روی فرم شما نیاید. اگر شما فرم دیگری را روی فرمتان بکشید تمام پیکسل ها خاموش می شوند. این مشخصه دوباره پیکسل ها رو روشن می کنه. اگه نامفهومه خودتون جستجو کنید.

javady_joon
دوشنبه 14 مهر 1393, 10:33 صبح
میشه دوستان دیگه کمی واضحتر توضیح بدن؟

vbhamed
سه شنبه 15 مهر 1393, 12:50 عصر
سلام
روي فرم به دو طريق ميشه چيزي نوشت يا شكلي گذاشت

1 - از نوار ابزار ويژوال بيسيك اشياء مختلف از جمله تكست باكس، جعبه تصوير، خط، دايره و ... روي فرم بزاريم
2 - از طريق دستورات ويژوال بيسيك روي فرم چيزي رسم كنيم يا متني بنويسيم مثلا با دستور Print ميشه متن نوشت يا با دستورات Line, Circle ميشه خط و مستطيل و دايره كشيد

در حالت شماره 2 اگر چيزي رسم كنيم و هنگامي كه دستورات مربوط به ترسيم در حال اجرا هستن فرم مخفي باشه يا هنوز نمايش داده نشده باشه، در نهايت هيچ خروجي يي نداريم و چيزي روي فرم نمي‌بينيم چون ويژوال بيسيك مستقيما مي‌خواد روي فرم چيزي رو رسم كنه و وقتي فرمي وجود نداره پس چيزي هم رسم نميشه

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

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

كدهاي زير رو بنويسيد و برنامه رو اجرا كنيد و يك فرم مثلا My Computer رو روي فرم برنامه بياريد و حركت بديد و تست كنيد، يكبار هم خاصيت AutoRedraw فرم و True كنيد و همين كار رو دوباره تست كنيد
Private Sub Form_Load()
Show
DoEvents
Show
DoEvents
Me.Move 0, 0, Screen.Width, Screen.Height - 450
Me.ScaleMode = 3
Me.Scale (-200, -200)-(200, 200)
Me.BackColor = 0
Me.AutoRedraw = True
Me.DrawWidth = 2
Dim i!
For i = 0 To 255 Step 10
Line (-i, -i)-(i, i / 5), RGB(i / 2, i / 2, i / 2), B
Circle (0, 0), i, RGB(i / 3, i / 2, i), -i / 50
Circle (0, 0), i, RGB(i, i / 3, i / 3), 0, -i / 159
Next
Me.ForeColor = vbYellow
Me.Font.Size = 50
Me.Font.Bold = True
Print "VB Graphics"
End Sub