نمایش نتایج 1 تا 8 از 8

نام تاپیک: ساخت کنترل های شفاف(transparent)

  1. #1
    کاربر دائمی آواتار haghft
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    https://t.me/pump_upp
    پست
    400

    Cool ساخت کنترل های شفاف(transparent)

    اگر توجه کرده باشین بعضی کنترل ها مانند لیبل حتی اگر backcolor آنها transparent باشد باز کاملا شفاف نمیشود و اگر فرم شما backgroundImage داشته باشد دقیقا به این موضوع پی خواهید برد.برای رفع این مشکل شما میتونید با استفاده از روشی که خواهیم گفت یک کنترل سفارشی از آن کنترل بسازید که کاملا شفاف است و هیچ مشکلی هم با backgroundImage ندارد.کافیست شما یک کلاس جدید بسازید و این کدها را بنویسید ما در مثال از Lable استفاده کردیم شما میتوانید به جای لیبل از کنترل های دیگری هم استفاده کنید.
    using System.Windows.Forms;

    namespace TransparentLabel
    {
    public class TransparentLabel : Label
    {
    public TransparentLabel()
    {
    this.SetStyle(ControlStyles.Opaque, true);
    this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
    }
    protected override CreateParams CreateParams
    {
    get
    {
    CreateParams parms = base.CreateParams;
    parms.ExStyle |= 0x20; // Turn on WS_EX_TRANSPARENT
    return parms;
    }
    }
    }
    }

  2. #2
    کاربر دائمی آواتار Directx
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    نامعلوم
    پست
    243

    نقل قول: ساخت کنترل های شفاف(transparent)

    سلام دوست عزیز می شه راجع به متد createPrams تون که override کردید توضیح بدید یعنی این خط
    parms.ExStyle |= 0x20;  // Turn on WS_EX_TRANSPARENT

    دقیقا چیکار می کنه؟ یا اصلا توضیح کلی راجع به createparams بدید که کارش چیه و چطور استفاده می شه تا همه ی دوستان استفاده کنند

  3. #3
    کاربر دائمی آواتار haghft
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    https://t.me/pump_upp
    پست
    400

    نقل قول: ساخت کنترل های شفاف(transparent)

    Extended Window Styles

    از API های ویندوز برای مدیریت استایل و قالب پنجره هاست.

  4. #4

    نقل قول: ساخت کنترل های شفاف(transparent)

    نقل قول نوشته شده توسط haghft مشاهده تاپیک
    اگر توجه کرده باشین بعضی کنترل ها مانند لیبل حتی اگر backcolor آنها transparent باشد باز کاملا شفاف نمیشود و اگر فرم شما backgroundImage داشته باشد دقیقا به این موضوع پی خواهید برد.برای رفع این مشکل شما میتونید با استفاده از روشی که خواهیم گفت یک کنترل سفارشی از آن کنترل بسازید که کاملا شفاف است و هیچ مشکلی هم با backgroundImage ندارد.کافیست شما یک کلاس جدید بسازید و این کدها را بنویسید ما در مثال از Lable استفاده کردیم شما میتوانید به جای لیبل از کنترل های دیگری هم استفاده کنید.
    using System.Windows.Forms;

    namespace TransparentLabel
    {
    public class TransparentLabel : Label
    {
    public TransparentLabel()
    {
    this.SetStyle(ControlStyles.Opaque, true);
    this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
    }
    protected override CreateParams CreateParams
    {
    get
    {
    CreateParams parms = base.CreateParams;
    parms.ExStyle |= 0x20; // Turn on WS_EX_TRANSPARENT
    return parms;
    }
    }
    }
    }
    فقط کافی برای backColor مقدار alpha رو هم ست کنین ....
    this.label1.BackColor = Color.FromArgb(150, Color.White);

    150 میزان شفافیت رو نشون میده ... از 0 تا 255

  5. #5
    کاربر دائمی آواتار haghft
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    https://t.me/pump_upp
    پست
    400

    نقل قول: ساخت کنترل های شفاف(transparent)

    نقل قول نوشته شده توسط exlord مشاهده تاپیک
    فقط کافی برای backColor مقدار alpha رو هم ست کنین ....
    this.label1.BackColor = Color.FromArgb(150, Color.White);

    150 میزان شفافیت رو نشون میده ... از 0 تا 255
    تو روش شما اگه فرم MDIparent باشه جواب نمیده اما تو اون روشی که من گفتم در هر حال جواب میده حتی backgroundimage داشته باشه و ismdicontainer هم true باشه!

  6. #6

    نقل قول: ساخت کنترل های شفاف(transparent)

    نقل قول نوشته شده توسط haghft مشاهده تاپیک
    تو روش شما اگه فرم MDIparent باشه جواب نمیده اما تو اون روشی که من گفتم در هر حال جواب میده حتی backgroundimage داشته باشه و ismdicontainer هم true باشه!
    خوب دلیلش اینکه توی فرم MDI قرار نیست که لیبل گزاشته بشه ...

  7. #7
    کاربر دائمی آواتار haghft
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    https://t.me/pump_upp
    پست
    400

    نقل قول: ساخت کنترل های شفاف(transparent)

    اتفاقا منم این فکرو میکردم اما چند وقت پیش یکی همین مشکلو داشت و من ان راه حلو بهش پیشنهاد کردم و کارش راه افتاد.در ضمن مثلا شما بخواهید لیبلی رو progressbar بزارید که درصد رو نشون بده باز روش شما جواب نمیده.ولی تا جایی که میشه باید از روش شما استفاده کرد.

  8. #8

    نقل قول: ساخت کنترل های شفاف(transparent)

    نقل قول نوشته شده توسط haghft مشاهده تاپیک
    اگر توجه کرده باشین بعضی کنترل ها مانند لیبل حتی اگر backcolor آنها transparent باشد باز کاملا شفاف نمیشود و اگر فرم شما backgroundImage داشته باشد دقیقا به این موضوع پی خواهید برد.برای رفع این مشکل شما میتونید با استفاده از روشی که خواهیم گفت یک کنترل سفارشی از آن کنترل بسازید که کاملا شفاف است و هیچ مشکلی هم با backgroundImage ندارد.کافیست شما یک کلاس جدید بسازید و این کدها را بنویسید ما در مثال از Lable استفاده کردیم شما میتوانید به جای لیبل از کنترل های دیگری هم استفاده کنید.
    using System.Windows.Forms;

    namespace TransparentLabel
    {
    public class TransparentLabel : Label
    {
    public TransparentLabel()
    {
    this.SetStyle(ControlStyles.Opaque, true);
    this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
    }
    protected override CreateParams CreateParams
    {
    get
    {
    CreateParams parms = base.CreateParams;
    parms.ExStyle |= 0x20; // Turn on WS_EX_TRANSPARENT
    return parms;
    }
    }
    }
    }

    با سلام خدمت دوستان:
    دوست خوبمون haghft سه سال پیش ساخت کنترل های شفاف رو خیلی خوب توضیح دادن. اما اگه بخواهیم که میزان شفافیت کنترلمون رو تعیین کنیم باید چه کار کنیم؟ با این روش میزان شفافیت کنترل ۰ می شه.
    البته ناگفته نماند که با استفاده از میزان آلفا می توان مقدار شفافیت را کم کرد٬ اما من در برنامه ام این کدها رو نوشتم٬ ولی با کم و زیاد کردن میزان آلفای رنگ پس زمینه تغییری توی شفافیت اعمال نشد و همچنان میزان شفافیت صفر بود. آیا دوستان راهی برای اینکار پیش نهاد دارند؟ در برنامه ام بر روی فرم چند کنترل دارم و کنترل شفاف را بر روی تمام کنترلها قرار داده ام و کنترلهای زیری کاملا پیدا هستند٬ اما می خواهم که کنترل شفاف که روی بقیه کنترلها قرار دارد کم رنگ باشد نه کاملا شفاف؟

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •