مشاهده نسخه کامل
: شیشه ای کردن فرم برای ویندوز 7!!
shadmehrshadow1
09-01-2011, 20:44
سلام
می خواستم ببینم چه جوری میشه کاری کرد که یه قسمتی از فرم در ویندوز 7 به صورت شیشه ای دیده بشه . مثل Titlebar پنجره ها در
وندوز 7 و یا بخش های دیگه توی ویندوز هفت .
یا اینکه اصلا توی ویندوز اکس پی هم اینطوری بشه . البته فقط یه قسمتی از فرم . مثلا یک عکس شفاف روی فرم بزاریم و بعد فرم مثل
همون عکس دیده بشه .
ولی ویندوز 7 مهم تره.
سلام
باید از توابع جدید موجود در کتابخانه dwmapi.dll استفاده کنید.
تابع DwmIsCompositionEnabled امکان فعال بودن این قابلیت و توانایی استفاده از ان را مشخص میکند و تابع DwmExtendFrameIntoClientArea هم محدوده مربعی شفاف سازی را مشخص میکند.
در نهایت باید در رویداد Paint بخش های مورد نیاز را سیاه کنید.
در حداقل کد چیزی شبیه این:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای نمونه کاملتر، مثلاً میتوانید نمونه زیر را مشاهده و دانلود کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید.
samanta 87
11-01-2011, 22:07
از طریق تغییر Opacity هر فرم می توانی فرم و کلیه اشیا را تا حد مورد نظرت شفاف کنی و این کار را در محیط visual انجام می دهی پس ربطی به نوع Windows ندارد
shadmehrshadow1
12-01-2011, 00:12
این قابلیت فقط برای ویندوز 7 هست؟ و برای ویندوز XP نیست ؟
از کجا می تونیم مطمئن شیم که توی ویندوز 7 کار میکنه و مشکلی پیش نمیاد ؟
shadmehrshadow1
12-01-2011, 11:38
نه opacity که کل فرم رو شفاف می کنه و فایده ای نداره و زیاد جالب نمیشه .
دوست خوبمون _H2_ درست متوجه منظورم شدن . این طور که معلومه اینکد در ویندوز XP جواب نمیده و من هم اکس پی دارم . ممنون میشم یه کدی بزارید از توی همون کد که فقط یه GroupBox و یا Panel رو شفاف کنه . ممنون میشم .
در ضمن دوست عزیر _H2_ یادمه که شما یه ساعت آنالوگ بسیار زیبا درست کرده بودید . هرچی گشتم پیداش نکردم .ممنون میشم لینک دانلود یا آدرس صفحه اش رو بزاررید .
سلام
همانطورکه درپست اول هم اشاره ای داشتید، این امکان بطور خاص مختص Vista و Win7 است که علاوه بر امکانات قبلی XP است.
در XP میتوانید کل فرم را نیمه شفاف کنید یا بخش از ان را کاملاً شفاف کنید (شبیه حفره و فرم های غیر مستطیلی)
(شاید بتوان در دو فرم روی هم در XP استفاده کرد ولی از جمله کارهاییست که میتوانم به انها صفت کثیف کاری برنامه نویسی را بدهم)
یه کدی بزارید از توی همون کد که فقط یه GroupBox و یا Panel رو شفاف کنه
همانطور که گفتم فقط یا کل فرم را نیمه شفاف کنید یا بخش هایی از آن را کاملاً شفاف کنید.
(یا حداقل من بلد نیستم)
البته میتوانید یک GroupBox یا Panel را نصبت به والد آن نیمه شفاف کنید.
یعنی مثلاً اگر تصویری روی فرم اصلی باشد به صورت نیمه شفاف از زیر این GroupBox مشخص باشد ولی این حالت در یک تکه مشخص نصبت به کل دسکتاپ XP ..... من نمیدانم.
... یه ساعت آنالوگ ...
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
support.h02.ir/fwlink/?LinkId=1005350577
نسخه آزمایشی تقویم شمسی با استایل و طرح و الگوریتم مشابه Win7 را هم میتوانید از لینک زیر دانلود کنید.
هنوز کمی کار دارد، انشاا... بعد اتمام نهایی در تاپیک جدیدی توضیح خواهم داد
support.h02.ir/fwlink/?LinkId=1002976157
موفق باشید.
shadmehrshadow1
13-01-2011, 10:20
همانطور که گفتم فقط یا کل فرم را نیمه شفاف کنید یا بخش هایی از آن را کاملاً شفاف کنید.
(یا حداقل من بلد نیستم)
البته میتوانید یک GroupBox یا Panel را نصبت به والد آن نیمه شفاف کنید.
یعنی مثلاً اگر تصویری روی فرم اصلی باشد به صورت نیمه شفاف از زیر این GroupBox مشخص باشد ولی این حالت در یک تکه مشخص نصبت به کل دسکتاپ XP ..... من نمیدانم.
برای ویندوز 7 هم نمیدونین چه جوریه ؟
سلام
از کجا می تونیم مطمئن شیم که توی ویندوز 7 کار میکنه و مشکلی پیش نمیاد ؟
برای ویندوز 7 هم نمیدونین چه جوریه ؟
همانطورکه در پست دوم گفته بودم در Vista و Win7 ...
تابع DwmIsCompositionEnabled امکان فعال بودن این قابلیت و توانایی استفاده از ان را مشخص میکند
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در صورتی که pfEnabled مقدار True برگرداند این قابلیت فعال و آماده است و در غیر این صورت نباید و فایده هم ندارد از توابع بعدی API (مثل آنچه در پست دوم گفته شد) استفاده کنید.
موفق باشید.
Payman_62
15-01-2011, 01:37
سلام
البته میتوانید یک GroupBox یا Panel را نصبت به والد آن نیمه شفاف کنید.
یعنی مثلاً اگر تصویری روی فرم اصلی باشد به صورت نیمه شفاف از زیر این GroupBox مشخص باشد ولی این حالت در یک تکه مشخص نصبت به کل دسکتاپ XP ..... من نمیدانم.
موفق باشید.
سلام دوست قدیمی.
این موردی رو که فرمودی رو خودت انجام دادی؟ یعنی مثلا زیر پنل دیده بشه.
من نتونستم این کار رو بکنم. پنل سیاه میشه. یا پیکچر باکسی که پرنتش یه گروپ باکسه هم به همین صورت. کادری که باید شفاف بشه سیاه میشه.
سلام.
پیشنهاد من اینه که از wpf استفاده کنید.
دیگه مهم نیست که توی ویندوز xp یا 7 باشین فقط کافیه به قول معروف دات نت نصب باشه.
گرافیک و خلاقیتی که میخواین رو ارائه بدین....به سادگی با wpf قابل حله.:20:.
البته نیاز به کمی آموزش هم داره.:46:
موفق و سربلند باشید.
Payman_62
15-01-2011, 14:15
سلام.
wpf یه راه دیگست. فرض کن پروژه ای کلا به صورت ویندوز فرم نوشته شده. حالا دیگه انتقالش به wpf دردسر زیادی داره.
shadmehrshadow1
15-01-2011, 19:31
سلام.
پیشنهاد من اینه که از wpf استفاده کنید.
دیگه مهم نیست که توی ویندوز xp یا 7 باشین فقط کافیه به قول معروف دات نت نصب باشه.
گرافیک و خلاقیتی که میخواین رو ارائه بدین....به سادگی با wpf قابل حله.:20:.
البته نیاز به کمی آموزش هم داره.:46:
موفق و سربلند باشید.
شما چنین WPF ای دارید ؟ میشه بزارید ببینیم .
تا حالا با wpf کار کردی؟:20:
تو wpf برای هر شی رو فرم میشه Opacity تعریف کرد:20:
برای کار با WPF باید XML هم بلد باشی:20:
shadmehrshadow1
15-01-2011, 21:11
کار نکردم . ولی با XML کمی آشنایی دارم .
بالاخره باید از یه جایی شروع کرد دیگه . حالا اگه دارید بزارید . ببینیم چی میشه .
سلام
این موردی رو که فرمودی رو خودت انجام دادی؟ یعنی مثلا زیر پنل دیده بشه.
این مورد که اشاره کردم فقط منحصر به شرایط ظرف و مظروف است و رابطه Background دو شی (شامل رنگ و تصویر) اعمال میشود.
چیزی شبیه این:
mediafire.com/?9pps5td6rd52rv7
Payman_62
16-01-2011, 01:13
سلام
این مورد که اشاره کردم فقط منحصر به شرایط ظرف و مظروف است و رابطه Background دو شی (شامل رنگ و تصویر) اعمال میشود.
چیزی شبیه این:
mediafire.com/?9pps5td6rd52rv7
سلام.
این در واقع همون پارامتر آلفا کلاس کالر هست.
اگه یه عکس در یه پیکچر باکس باشه شفافیت پیکچر باکس از بین میره. در واقع عکس بک کالر رو میپوشونه.
من میخواستم پیکچر باکس رو همراه عکس ترنزپرنت کنم. تو wpf همون طور که دوستمون گفت به راحتی انجام پذیره. اما در ویندوز فرم کمی مشکله.
shadmehrshadow1
16-01-2011, 11:35
کسی WPF این مورد رو نداره که بزاره ؟
samanta 87
16-01-2011, 18:42
نیازی نیست الزاما کاملا Xml بلد باشی تا بتوانی WPF کار کنی یه برنامه Wpf را باز کن و سعی کن بفهمی چی به چیه(کدهاش را مرحله به مرحله بخوان) می فهمی که مثل حالت فرمی است قسمت کلاس و کد نویسی اصلی و در طراحی هم فقط کافیه با Properties کار کنی. اول کار سعی نکن کدی برای طراحی دستی بنویسی و فقط تغیرات را با کمک Properties اعمال کن بعد به تگی که اضافه می شود دقت کن در Msdn در مورد تگ جستجو کن خصوصیان آن را بدست می آوری. من یه پروژه ساده دارم می تونی یه نگاهی بکنی شاید بکارت بیاد
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
shadmehrshadow1
18-01-2011, 12:03
راستش من ویندوز XP دارم . و اگه بخوام WPF این مورد رو درست کنم . چون ویندوز اکس پی از این قابلیت پشتیبانی نمیکنه نمیتونم نتیجش رو در حین کار ببیننم . پس اگه کسی ویندوز 7 داره اگه میتونه اینو درست کنه یا اگه داره و در اختیار بقیه قرار بده .
ممنون.
WPF که مختص ویستا یا سون نیست، روی XP هم Windows Presentation Foundation نصب هست
shadmehrshadow1
19-01-2011, 15:54
WPF که مختص ویستا یا سون نیست، روی XP هم Windows Presentation Foundation نصب هست
بله . ولی من چنین چیزی نگفتم که WPF روی XP کار نمیکنه .
گفتم اون قسمت شفاف شدن یا Aثro کار نمیکنه .چون اکسپی پشتیبانیش نمیکنه . ممکنه بشه درستش کرد ولی نمیشه در حین کار نتیجه رودید چون اکسپی از چنین قابلیتی پشتیبانی نمی کنه .
سلام
من فقط چند پست آخر رو خوندم ...
اگر دنبال قابلیت شیشه ای (Glass) در XP می گردید! نمی شود چون این قابلیت مربوط به API ای به اسم Desktop Window Manager هست که توی XP نیست...
----------------------------------------------------------------------------
در WPF :
می توانید فقط به کنترل های صفحه تان تم Aero بدهید
(
با اضافه کردن مرجع به PresentationFramework.Aero و تغییر شکل App.xaml به شکل زیر:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
)
البته می توانید یک تم شبیه سون طراحی کنید ولی آن قابلیت را ندارید
موفق باشید
در WPF :
می توانید فقط به کنترل های صفحه تان تم Aero بدهید
البته می توانید یک تم شبیه سون طراحی کنید ولی آن قابلیت را ندارید
:5:
یک چیزهایی به فکرم زد!
اگر به نتیجه ای رسیدم پست می زنم...
حل شد !
مقدار خصیصه WindowStyle پنجره تان را None و مقدار AllowsTransparency را True کنید.
کار زیر را هم انجام دهید:
با اضافه کردن مرجع به PresentationFramework.Aero و تغییر شکل App.xaml به شکل زیر:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا فقط کافی است یک طراح خوب باشید! یک پنجره شبیه سون طراحی کنید و ...
این هم یک سمپل(الته ظاهر سون ندارد ولی مفهوم را می رساند):
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید
سلام
اگه یه عکس در یه پیکچر باکس باشه شفافیت پیکچر باکس از بین میره. در واقع عکس بک کالر رو میپوشونه
بله اینطور است.
ولی اگر بحرحال کسی خواست از همان رابط غیر WPF استفاده کند، میتواند خود تصویر داخل PictureBox یا GroupBox و... را با کانال آلفا قرار داد.
یعنی خود تصویر را در نرم افزاری مثل Photoshop نیمه شفاف کنید.
آنگاه اگر رنگ پسضمینه هم نیمه شفاف باشد، طرح background والد دیده میشود.
(((
لازم به یادآوری نیست که کل این مبحث مربوط به داخل خود فرم است و این مطلب ربطی به شیشه ای کردن انحصاری دور فرم ندارد.
)))
shadmehrshadow1
23-01-2011, 16:46
دستت درد نکنه به خاطر کد .ولی به زبان C هستش و من برنامه ای ندارم که بازش کنم . اگه ممکنه به vb 2008 تبدیل کنی خیلی ممنون می شم .
نمی دونم درست متوجه شدم یا نه
این پروژه رو ببینید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
shadmehrshadow1
23-01-2011, 23:04
ممنونم .
ولی این فقط به شکل vb 2008 ذخیره شده و همه ی فرم هاش c هست و باز نمی شه .
سلام
با کمی تغییرات (ایجاد یک تم):
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Payman_62
28-01-2011, 02:05
سلام
بله اینطور است.
ولی اگر بحرحال کسی خواست از همان رابط غیر WPF استفاده کند، میتواند خود تصویر داخل PictureBox یا GroupBox و... را با کانال آلفا قرار داد.
یعنی خود تصویر را در نرم افزاری مثل Photoshop نیمه شفاف کنید.
آنگاه اگر رنگ پسضمینه هم نیمه شفاف باشد، طرح background والد دیده میشود.
(((
لازم به یادآوری نیست که کل این مبحث مربوط به داخل خود فرم است و این مطلب ربطی به شیشه ای کردن انحصاری دور فرم ندارد.
)))
سلام.
درست میفرمایید. با قرار دادن یه عکس شفاف و بکگراند ترنزپرنت امکان مشاهده بکگراند فرم از پشت عکس امکان پذیره.
فرمت هایی مانند png یا ico که ساختاری مشابه دارند امکان شفاف شدن رو دارن.
اما مشکل این جاست که عکس به صورت jpg یا bmp به برنامه وارد بشه کار گره میخوره. عمل تبدیلش به png امکان پذیره. اما عمل شفاف کردن عکس داخل خود برنامه کمی مشکله.
Payman_62
28-01-2011, 03:21
سلام.
یه روش ساده برای شفاف کردن فرم به ذهنم رسید.
به این صورت که عکس رو لود کنیم. تبدیل به png کنیم و پیکسل به پیکسل، پیکسل های عکس رو شفاف کنیم.
به این صورت:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته فکر میکنم داخل کتاب خانه های .net روش حرفه ای تر هم وجود داشته باشه. مثل متد maketransparent کلاس bitmap که بکگراند عکس png رو حذف میکنه. برای شفاف کردنش هم باید روش ساده تری باشه.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.