PDA

View Full Version : شفاف كردن فرم



Mohamad ghorbani
جمعه 30 اردیبهشت 1390, 23:57 عصر
ميدونم اين سوالالم خيلي تكراري ولي هرچي گشتم چيزي پيدا نكردم.
مي خوام فرمم رو 50 درصد شفاف كنم بدون اينكه اشيا روي فرم محو بشه.
با تشكر ...:قلب:

Mr'Jamshidy
شنبه 31 اردیبهشت 1390, 00:47 صبح
منظورتون اینه که فرم شفاف بشه اما کنترل ها شفاف نشه؟

اگر اینطور باشه یکم کارتون سخت میشه

Mohamad ghorbani
شنبه 31 اردیبهشت 1390, 11:02 صبح
بله منظورم همينه
ميشه راهنمايي كنيد؟

محسن واژدی
شنبه 31 اردیبهشت 1390, 12:07 عصر
سلام علیکم
اینگونه نمیشود، container که شفاف شود همه اجزای وابسته به آن نیز شفاف میشوند

SilverLearn
شنبه 31 اردیبهشت 1390, 13:23 عصر
سلام آقا من يك سال پيش تو سايت دنبال اسكين ميگشتم يك كامپوننت پيدا كردم كه يكي از بچه ها گذاشته بود
كامپوننتي كه فرم رو مي كرد شبيه فرم ويستا ولي الان ندارمش يكم سرچ كني فكر كنم بتوني پيداش كني
اين كامپوننت قابليت transparent داشت و مي تونستي اونو تنظيم كني....

محسن واژدی
شنبه 31 اردیبهشت 1390, 13:41 عصر
سلام آقا من يك سال پيش تو سايت دنبال اسكين ميگشتم يك كامپوننت پيدا كردم كه يكي از بچه ها گذاشته بود
كامپوننتي كه فرم رو مي كرد شبيه فرم ويستا ولي الان ندارمش يكم سرچ كني فكر كنم بتوني پيداش كني
اين كامپوننت قابليت transparent داشت و مي تونستي اونو تنظيم كني....

سلام علیکم
اینگونه که از سوال آقای قربانی برمیاد ایشون میخوان فرم transparentو اشیاء همچنان بصورت معمولی (شفاف نشوند) باقی بماند که در اینصورت با APIهایی که عمل شفاف سازی فرم را انجام میدهند این امکان وجود ندارد

موفق باشید

Mr'Jamshidy
شنبه 31 اردیبهشت 1390, 14:04 عصر
چرا اتفاقا همچین کاری شدنیه اما یکم سخته

تقیرابا این یک ترفنده برنامه نویسیه

من روش رو میگم الباقی با خود شما

اول از همه از صفحه دسکتاپ یک عکس میگیری (محیطی که پنجره روی اون قرار میگیره)

بعد از فرم برنامه عکس میگیری

حالا عکس گرفته شده از فرم رو روی اون یکی عکس با شفافیت 50% میزاری

حالا عکس آخر رو پشت زمینه فرمت میکنی

خوب این مواردی رو که گفتم تو تایمر میزاری

تمامی مواردی که گفته شد رو تو همین فروم میتونی پیدا کنی

نتیجه: این کار بی فایده س چون سرعت برنامه رو پایین میاره و به جای به جون خریدن این همه دردسر با روش های دیگه هم میتونید محیط کاربری جالب و جذابی ارایه بدید که حداقل سرعت برنامهتون رو پایین نیاره البته API هم از ویندوز ویستا به بعد برای این کار تعبیه شده که متاسفانه تا جایی که من جلو رفتم تو ویبی جواب نمیده و فقط تو ویژوال سی پلاس پلاس جواب میده

موفق باشید

returnx
شنبه 31 اردیبهشت 1390, 14:15 عصر
من تا حالا جواب ندادم چون اگه یک Search میکردید من چند وقت پیش این برنامه رو برای یکی از کاربران گذاشته بودم...
البته من این برنامه رو که برنامه ی یکی دیگه از کاربران بود کامل کرده بودم...
من تو این برنامه از کامپوننت Alpha_Image استفاده کرده بودم که ایشون می خواستند برنامه کاملا Open Source باشه که از دست من کاری براشون بر نیومد...
یک بار دیگه این برنامه رو براتون میزارم...
موفق باشید.../

SilverLearn
شنبه 07 خرداد 1390, 01:19 صبح
سلام روش mr!jamshidy خوبه ولی به نظر من خاصیت transparent به این گونه به قول شما ترفند برنامه نویسی نمیگن
ولی بازم ایده خیلی جالبی هست
ولی یک مشکلی که هست
هم برنامه سرعتش میاد پایین
هم باید فرم را در حالت borderstyle = 0-none گذاشت و در حالت های دیگر بوردر فرم هیچ تغییری نمی کند

Mr'Jamshidy
شنبه 07 خرداد 1390, 15:50 عصر
سلام روش mr!jamshidy خوبه ولی به نظر من خاصیت transparent به این گونه به قول شما ترفند برنامه نویسی نمیگن
ولی بازم ایده خیلی جالبی هست
ولی یک مشکلی که هست
هم برنامه سرعتش میاد پایین
هم باید فرم را در حالت borderstyle = 0-none گذاشت و در حالت های دیگر بوردر فرم هیچ تغییری نمی کند

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

تم شیشه ایه (Areo) ویندوز 7 و ویستا از موتور گرافیکی دایرکس ایکس استفاده میکنن ولی خوب خوبیش اینه که برای یک برنامه نیومدن این همه کد بنویسن برای کل محیط ویندوز این کارو کردن

حالا شما میتونی یکی از حالات زیر رو انتخواب کنی

1. استفاده از همون ترفندی که گفتم
2. استفاده از موتور گرافیکی دایرکت ایکس
3. نقل مکان از VB به C++

فعلا همینا به ذهنم رسید

pcdownload.bloghaa.com
یک شنبه 08 خرداد 1390, 03:14 صبح
سلام
کد فرم را شفاف نمیکنه ولی نامریی میکنه ولی با کنترل ها کاری نداره.
حالا با انتخاب یک زمینه مناسب برای فرم میشه حالت شفافیت را هم ایجاد کرد.

Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32.dll" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long


Const LWA_COLORKEY = &H1
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Const BM_SETSTATE = &HF3


Private Sub Form_Load()
Dim Ret As Long
Dim CLR As Long
Me.BackColor = RGB(1, 1, 1)
CLR = Me.BackColor
Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Me.hWnd, CLR, 0, LWA_COLORKEY
End Sub