PDA

View Full Version : آموزش: چگونه فرم را به حالت شیشه ای (Glass Areo) در بیاریم؟



Farshid007
سه شنبه 11 بهمن 1390, 17:00 عصر
سلام دوستان برای این کار کافیه این کد ها رو تو کلاس فرمتون ادد کنید:
#region Glass windows
//Glass Windows
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
// This can't be done any earlier than the SourceInitialized event:
GlassHelper.ExtendGlassFrame(this, new Thickness(-1));
}
struct MARGINS
{
public MARGINS(Thickness t)
{
Left = (int)t.Left;
Right = (int)t.Right;
Top = (int)t.Top;
Bottom = (int)t.Bottom;
}
public int Left;
public int Right;
public int Top;
public int Bottom;
}
public class GlassHelper
{
[DllImport("dwmapi.dll", PreserveSig = false)]
static extern void DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS margins);

[DllImport("dwmapi.dll", PreserveSig = false)]
static extern bool DwmIsCompositionEnabled();
public static bool ExtendGlassFrame(Window window, Thickness margin)
{
if (!DwmIsCompositionEnabled())
return false;

IntPtr hwnd = new WindowInteropHelper(window).Handle;
if (hwnd == IntPtr.Zero)
throw new InvalidOperationException("The Window must be shown before extending glass.");

// Set the background to transparent from both the WPF and Win32 perspectives
window.Background = Brushes.Transparent;
HwndSource.FromHwnd(hwnd).CompositionTarget.Backgr oundColor = Colors.Transparent;

MARGINS margins = new MARGINS(margin);
DwmExtendFrameIntoClientArea(hwnd, ref margins);
return true;
}
}
#endregion

اگر هم گرید فرم به اون شکل در نیومد اون رو پاک کنید و یه گرید جدید به فرم ادد کنید.
در ضمن این دو تا فضای نام رو هم ادد کنید:
using System.Runtime.InteropServices;
using System.Windows.Interop;
موفق باشید./

مهدی فرزاد
پنج شنبه 13 بهمن 1390, 08:44 صبح
سلام
لازمه یک نکته رو متذکر بشم و اون اینه که این کد ها فقط در ویندوز های 7 و Vista جواب میده
در هنگام استفاده این رو مد نظر داشته باشید

Direlap
چهارشنبه 06 اردیبهشت 1391, 17:58 عصر
ممنون پس اگه تو ویندوز ایکس پی اجرا بشه چی میشه ؟ خطا میده ؟ برنامه کارنمیکنه ؟ یا مثل فرم معمولی نمایش داده میشه ؟

entezar.ilia
یک شنبه 17 اردیبهشت 1391, 01:44 صبح
دوستان ما توی ویندوز XP هم امتحان کردیم ، جواب میده اما فورم مثل فورم های عادی XP بود.
البته یک dWmapi.dll وجود داره که فکر میکنم میشه باهاش کار رو راه انداخت توی Xp .منبع اطلاعات :http://social.msdn.microsoft.com/Forums/en/winforms/thread/e3e83dc7-2675-48be-9325-fed0055b0db9

موفق باشید.

roomusic
سه شنبه 06 تیر 1391, 04:22 صبح
با سلام.
میشه یه سورس از همین کار بزارین؟؟
ممنون میشم

m.bibjan
سه شنبه 06 تیر 1391, 04:43 صبح
سلام فقط توی ویندوز XP شاید شیشه ای نباشه.