PDA

View Full Version : سوال: نحوه ی ساخت پیکچر باکس شفاف



parsa lotfy
دوشنبه 14 فروردین 1391, 12:45 عصر
چگونه کاری کنیم که از درون یک پیکچر باکس دسکتاپ دیده شود در واقه برای یک پیکچرباکس اوپاسیتی تعریف کنیم؟:گریه: لطفا برنامهی ضمیمه بگذارید....ممنون.

hi level hdd
دوشنبه 14 فروردین 1391, 12:59 عصر
سلام
کافیه در فرمتون گزینه transparent Key رو برابر رنگ سیستمی Control قرار بدید و رنگ پس زمینه فرم رو هم Control بذارید.
اگه می خواهید فقط از PictureBox دسکتاپ معلوم باشه رنگ پس زمینه پیکچر باگس رو Control , رنگ پس زمینه فرم رو رنگ دیگه بذار.
توجه داشته باش که وقتی رنگ پس زمینه فرم رو تغییر دادی رنگ پیکچر باکس رو هم یه بار چک کن که به رنگ پس زمینه فرمت در نیومده باشه تا به هدفت برسی.
مثال یا کد خاصی هم نمی خواد

samadblaj
دوشنبه 14 فروردین 1391, 13:19 عصر
دوست عزیز میشه واضح تر توضیح بدید transparent رو از کجا باید پیدا کرد؟

آیا میشه شفافیت سایر شی ها مثل button رو تغییر داد یعنی شفافیت فرم تغییر نکند فقط اشیای روی فرم؟

hi level hdd
دوشنبه 14 فروردین 1391, 13:28 عصر
هیچ کاری در برنامه نویسی نشدنی نیست.
اول Transparent Key کجاست؟ کافیه بری تو قسمت طراحی یا Design فرم و روی فرمتون کلیک کنید تا انتخاب بشه. بعد در قسمت پروپرتی های اون این گزینه وجود داره که سه تا برگه یا Tab وجود داره که Control توی برگه System هستش. برای تمام اجزا و کامپوننت این اتفاق میتونه بیفته.
و اخریش این که این عمل باعث میشه که تمام رنگ یک کامپوننت از بین بره و نه اینه کم رنگ بشه(مثل opacity فرم) اول اینو امتحان کن بعد برای کم رنگ کردنش و نه از بین بردن رنگ کامل بیشتر توضیح می دم(البته اگر لازم شد)

parsa lotfy
سه شنبه 15 فروردین 1391, 12:36 عصر
واقعا دستتان درد نکند حالا میزان اوپاسیتی رو چی جوری تعیین کنیم؟

hi level hdd
چهارشنبه 16 فروردین 1391, 18:14 عصر
سلام یه یوزرکنترل تعریف کن(البته چیزهای دیگه هم میشه که برای بزرگتر نشدن بحث فعلا همو رو استفاده کن) و در قسمت کد برنامت این کد رو کپی کن
public partial class UserControl1 : UserControl
{
int opacity;
public UserControl1()
{
InitializeComponent();
}
protected override CreateParams CreateParams
{
get
{
CreateParams p = base.CreateParams;
p.ExStyle |= 0x00000020;//WS_EX_TRANSPARENT
return p;
}
}

public int Opacity
{
get { return opacity; }
set
{
opacity = value;
this.InvalidateEx();
}
}

protected override void OnPaintBackground(PaintEventArgs e)
{
Color color = Color.FromArgb(Opacity, this.BackColor);
e.Graphics.FillRectangle(new SolidBrush(color), e.ClipRectangle);
}

protected void InvalidateEx()
{
if (Parent == null)
return;
Rectangle rect = new Rectangle(this.Location, this.Size);
Parent.Invalidate(rect, true);
}
}
بعد یه بار برنامه رو اجرا کن و دوباره ببند تا یوزرکنترل توی تولباکست بیاد. بعد یوزر رو بکش تو فرمت و مقدار opacity رو تو پروپرتیش تغییر بده . رنگ یوزرکنترل رو هم عوض کن و از اون با یه رنگ دیگه کپی بگیر. بعد برنامه رو اجرا کن. یوزرکنترل پشتی از یوزرجلویی دیده میشه.