یک 1 نظر

  1. ali

    با استفاده از ترجمه ماشینی محتوا:
    در حالی که کار بر روی یک برنامه چند رسانه‌ای دیگر ، خودم را به یک کنترل شفاف نیاز یافتم ( TextBox ) . NET . خیلی زود متوجه شدم که اگر یک نفر بیرون باشد ، پس باید آنقدر شفاف باشد که من نمی‌توانم آن را پیدا کنم . در جستجوی من ، متوجه شدم که یک فیلتر AlphaBlend برای دکمه‌های وب به میزبانی اینترنت وجود دارد ، اما من هیچ کدام از فرم‌های برنده را نیافتم . پس من شروع به نوشتن کردم .
    در این نسخه نسخه 1.0 از AlphaBlendTextBox نوشته شده در C # .
    هشدار دهید که کاملا تست نشده است , نه کاملا بهینه و هنوز در هر سیستم تولیدی استفاده نمی‌شود . با این حال ، می‌خواستم آن را در اینجا تسلیم کنم ، امیدوار بودم که برخی از شما کنترل را پیدا کرده و این کد منبع مفید است .
    یک یادداشت بزرگ : من از استودیو تصویری استفاده کرده‌ام . NET ۲۰۰۳ و . . چارچوب NET ۱.۱ برای ایجاد این کنترل و پروژه‌های نمونه . من VS۲۰۰۲ را repost . نسخه NET ۱.۰ به محض اینکه بتوانم .
    پس‌زمینه
    در حالی که طراحی این کنترل ، من تصمیم گرفتم که بهترین روش برای زیر کلاس کنترل TextBox موجود باشد ، به طوری که کنترل جدید می‌تواند در هر جایی که کنترل اصلی TextBox باشد ، استفاده شود . کشف سریع این بود که کنترل TextBox یک درد واقعی است . چندین برنامه نویسان به این نکته اشاره کرده‌اند که این کار می‌تواند یک فرآیند و یا هیچ فرآیندی باشد .
    این به این دلیل است که در نسخه‌های فعلی . NET ، کنترل TextBox فقط پوششی برای کنترل Win۳۲ قدیمی است . این امر تغییر را دشوار می‌سازد . اگر روش OnPaint را برای کنترل نادیده بگیرید ، نادیده گرفته می‌شود مگر اینکه سبک control’s را به UserPaint تغییر دهید . با این حال ، انجام این کار کنترل را از خود ترسیم می‌کند ، تا زمانی که کاربر برخی از متن را انتخاب می‌کند و حتی در آن صورت نقاشی ، غیرقابل‌پیش‌بینی است .
    به مشکل اصلی من برگردیم . من یک کنترل TextBox می‌خواستم که برای پس‌زمینه شفاف بود . در حالی که به پرونده‌های کمک نگاه می‌کردم متوجه شدم . کنترل‌های NET یک سبک جدید به نام SupportsTransparentBackColor دارند که به نظر می‌رسد این کار را انجام می‌دهد . با این حال ، این سبک نیاز دارد که سبک UserPaint تنظیم شود ، و همانطور که در بالا اشاره شد ، کنترل TextBox را از خود ترسیم می‌کند . بدتر از همه ، وقتی TextBox نقاشی کرد ، هنوز یک پس‌زمینه محکم داشت .
    بعد از چند هفته ناامیدی ، من این راه‌حل را مطرح کردم : زیر کنترل TextBox و اضافه کردن یک PictureBox به کنترل ، به جای TextBox اصلی .
    وقتی که کنترل باید رنگ‌آمیزی شود ، این کار زیر را انجام می‌دهد :
    به طور موقت سبک UserPaint را sets
    گره bitmap را با ارسال پیغام PRINT WM بدست آورد
    به سبک UserPaint برگردید
    از نقشه‌رنگ برای تبدیل پس‌زمینه جامد به پس‌زمینه شفاف و شفاف استفاده می‌کند
    ارقام را مشخص کنید و اگر لازم است آن را ترسیم کنید
    سپس تصویر آلفا جدید را به PictureBox کپی کنید که وقتی رسم می‌شود با پس‌زمینه ترکیب می‌شود
    علاوه بر این ، PictureBox باید نادیده گرفته شود تا هر رویداد موشی به آن ارسال شود . همچنین ، چندین ویژگی عمومی و روش‌های TextBox باید نادیده گرفته شوند ، مانند قلم ، MultiLine ، و غیره .
    استفاده از کد
    این کنترل می‌تواند به همان شیوه کنترل استاندارد استاندارد استفاده شود . من کنترل را به عنوان یک پرونده کنترل ( DLL ) انجام داده‌ام . برای استفاده از این کنترل ، به سادگی روی نوار ابزار کلیک کرده و گزینه ” Add / حذف آیتم‌ها ” و سپس به فایل AlphaBlendTextBox.dll را انتخاب کنید . پس از انجام این کار ، کنترل AlphaBlendTextBox باید در نوار ابزار شما ( تحت کنترل کاربری من ) ظاهر شود . حالا می‌توانید کنترل را به یک شکل بکشید و از آن درست مانند کنترل TextBox اصلی استفاده کنید . کنترل یک ویژگی جدید به نام BackAlpha دارد که به شما اجازه می‌دهد تا مقدار پس‌زمینه control’s را تنظیم کنید . محدوده برای شفاف ، ۲۵۵ برای شفاف و یا بین برای شفاف است .

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *