PDA

View Full Version : سوال: استفاده از يوزر كنترل توي فرم ويندوز اپليكيشن ترنسپرنت!



mahboube
پنج شنبه 06 آبان 1389, 11:58 صبح
سلام دوستان
من به يك مشكل بد برخوردم.
من يك يوزر كنترلwpf درست ميكنم و تويwindows app استفاده ميكنم.حالا ميخوام فرم ويندوز اپليكيشنم رو transparent كنم كه بك گروندش نشون داده نشه ولي وقتي اينكارو ميكنم يوزر كنترلم سياه ميشه.
چيكارش بايد بكنم!!!
فقط نگيد نميشه كه نابود ميشما!سه روزه دارم اين كنترلو درست ميكنم و غير از اينكنترلي كه تو فرم ويندوزم هست چيز ديگه اي رو توي اون فرم نبايد نشون بده!!
مرسي

mahboube
پنج شنبه 06 آبان 1389, 12:07 عصر
اينم نمونه برنامشه:
من ميخام يوزر كنترلم فقط نشون داده بشه ولي سياش مي كنه:
يعني بايد :
form.transparentkey=form.bakccolor
البته اينجا قرمز گذاشتم ولي فرقي نميكنه هر رنگي باشه سياش مي كنه!

mahboube
پنج شنبه 06 آبان 1389, 13:03 عصر
نصفشو حل كردم
او برنامه بالا اگر Opacity فرم ويندوزرو 0 كنيد فقط يوزر كنترل wpf رو نشون ميده ولي مشكل ديگم اينه كه بك گروند خود يوزر كنترلو نبايد ببينم حالا.
مثلا اگريك باتن توي يوزر كنترلم هست فقط باتن رو نشون بده بك گروندشو نشون نده!

مهدی فرزاد
پنج شنبه 06 آبان 1389, 13:47 عصر
سلام


this.elementHost1.BackColor = System.Drawing.Color.Transparent;


و بك گراند يوزر كنترلت رو توي WPF هم بردار

mahboube
پنج شنبه 06 آبان 1389, 13:52 عصر
سلام


this.elementHost1.BackColor = System.Drawing.Color.Transparent;


و بك گراند يوزر كنترلت رو توي WPF هم بردار

مرسي ولي نشد.بك گروندش. بك گروند فرم ميزاره!
اينم همون برنامه با اين خط كد:

mahboube
شنبه 08 آبان 1389, 10:21 صبح
رفقا من اينو خيلي لازم دارم.
راهي داره؟؟!!!

mahboube
شنبه 08 آبان 1389, 11:56 صبح
من سپاسگذارم كه خودم سوال ميپرسم خودمم جواب ميدم!!!
والا من كه راهشو پيدا نكردم برا همين از دسكتاپم عكس گرفتم و گذاشتم بك گروند كنترلم!!ولي بايد راه داشته باشه!!



public partial class Form_Des : Form
{
public const int SRCCOPY = 0x00CC0020;
[DllImport("user32.dll")]
public static extern IntPtr GetWindowDC(IntPtr hWnd);
[DllImport("gdi32.dll")]
public static extern bool BitBlt(IntPtr hObject, int nXDest, int nYDest,
int nWidth, int nHeight, IntPtr hObjectSource,
int nXSrc, int nYSrc, int dwRop);
[DllImport("gdi32.dll")]
public static extern IntPtr CreateCompatibleDC(IntPtr hDC);
[DllImport("user32.dll")]
public static extern IntPtr GetDesktopWindow();
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern bool DeleteObject(IntPtr hObject);


private void Form_Des_Load(object sender, EventArgs e)
{
elementHost1.BackgroundImage = CaptureWindow(GetDesktopWindow());
}
//**************************Capture Window ****************************
public Bitmap CaptureWindow(IntPtr handle)
{
Bitmap bitmaps = new Bitmap(this.Width, this.Height);
Graphics g = Graphics.FromImage(bitmaps);

System.IntPtr bmDC = g.GetHdc();
IntPtr hdcSrc =GetWindowDC(handle);
BitBlt(bmDC, 0, 0, this.Width, this.Height, hdcSrc, this.Left, this.Top, SRCCOPY);
g.Dispose();
return bitmaps;
}
}

ali reza mansoori 2
پنج شنبه 26 بهمن 1391, 17:11 عصر
دوستان من هم همین مشکل رو دارم
یعنی شدنیه؟؟؟