PDA

View Full Version : سؤال:در مورد رنگ فرم



je_nickp
دوشنبه 21 دی 1383, 10:35 صبح
چه طوری می شود یک رنگ خاص را از فرم ناپدید کرد یعنی هر قسمت از فرم که این رنگ را دارد دیده نشود شبیه TransparencyKey توی VB.NET ؟

Behrouz_Rad
دوشنبه 21 دی 1383, 13:28 عصر
سلام.
با استفاده از تابع TransparentBlt می توانید این کار را انجام دهید:
به عنوان یک برنامه ی نمونه:
دو تا Picture Box روی فرم قرار بدید و در Picture Box اول، یک عکس که قسمت بیشتر آن دارای رنگ سفید است، قرار دهید.
کد زیر را در فرم، کپی کنید:


Private Declare Function TransparentBlt Lib "msimg32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal crTransparent As Long) As Boolean

Private Sub Form_Load()
Picture1.AutoSize = True
Picture1.ScaleMode = vbPixels
Picture2.ScaleMode = vbPixels
End Sub

Private Sub Picture2_Paint()
DoEvents
TransparentBlt Picture2.hdc, 0, 0, Picture2.ScaleWidth, Picture2.ScaleHeight, Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, vbWhite
End Sub

کد فوق، تمامی پیکسل های سفید عکس را حذف کرده و عکس تغییر یافته را به Picture Box دوم منتقل می کند.
رنگی که قصد حذف آن را دارید، در آخرین آرگومان ذکر کنید (در اینجا vbWhite – رنگ سفید – ذکر شده).
برای انعطاف پذیری بیشتر از تابع RGB برای تولید رنگ استفاده کنید.
موفق باشید.

:wise1:

je_nickp
سه شنبه 22 دی 1383, 10:19 صبح
با تشکر جناب آقای بهروز راد :thnx: ، منظور من یک ذره متفاوت بود.
من می خواستم نقاط مورد نظر از فرم ناپدید بشوند نه از یک تصویر درون یک جعیه ی تصویر.
باز هم از راهنماییتان متشکرم.