برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط ravegoat برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
خیلی ممنون
تقدم و تاخر اش را میدونم . ولی دلیل اش نسبت به کد خودم را متوجه نمیشم . نمیدونم چطور میشه که اون کد را توی متد سازنده که مینویسم ، اون پروپرتی BackgroundControls ام برای شی transparentControl (در اون کد) ، null میشه اما اون کد رو توی رویداد Load (که با تاخیر نسبت به متد سازنده اجرا میشه) که میذارم ، مشکلی نداره.
فرقی نداره پروژه ی sln را بدم یا نه . کلا کدش همون قدر به اضافه ی اون کلاس کنترل هست که پیوست کردم.
----------------------------------------------
الان یه مشکل دیگه داره . یه تغییراتی در این کلاس دادم که در زیر لینک دانلودش را میذارم :
دانلود فایل پیوست TransparentControl
با با اونکه پروپرتی BackgroundControls (شامل تمامی کنترل هایی که زیر کنترل جاری هست) را اول invalidate میکنم و بعد کنترل جاری را invalidate میکنم و بعد پروپرتی ForegroundControls (شامل تمامی کنترل هایی که جلوی کنترل جاری هست) را invalidate میکنم ، ولی برعکس رسم میکنه . یعنی کنترل های BackgroundControls را سر آخر رسم میکنه که باعث میشه جلو بیان .
در رویداد Load فرم هم همون کد پست اول را لطفا بنویسید (بجای مسیر فایل ها ، یه فایل png ای که بخشی اش transparent باشه ، بدید یا بیت مپی بدید که بخشی اش transparent باشه . اندازه ی بیت مپ هاتون جوری باشه که در کد زیر ، بخشی از هر دو شی از کنترل های transparentControl و transparentControl_2 روی هم بیفتن . در مثال زیر ، اندازه های شی بیت مپ ، 24 در 24 هستن ) :
هسته ی مرکزی کدهای کنترل کلاس TransparentControl که به این بخش مربوط میشه ، رویداد AllParents_Invalidated هست.کد:private TransparentControl transparentControl; private TransparentControl transparentControl_2; private void Form1_Load(object sender, EventArgs e) { Bitmap bitmap = new Bitmap(@"E:\Project\Visual Studio\C#.Net\Saved Project\0 Important Project\Poshtibangir Tolo\PoshtibangirTolo\bin\Debug\Icon\PanelToolBar\Close\Close.png"); bitmap = TransparentControlBitmap.SetColor(bitmap, Color.Red); TransparentControlBitmap controlBitmap = new TransparentControlBitmap(bitmap, new Bitmap(bitmap.Width, bitmap.Height), new Bitmap(bitmap.Width, bitmap.Height), new Bitmap(bitmap.Width, bitmap.Height)); controlBitmap.GraphicInterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; controlBitmap.SetColor(bitmap, ExportBitmapFor.MouseEnterBitmap, Color.DeepSkyBlue); controlBitmap.SetColor(bitmap, ExportBitmapFor.MouseDownBitmap, Color.Blue); controlBitmap.SetColor(bitmap, ExportBitmapFor.ControlDisabledBitmap, Color.Yellow); this.transparentControl = new TransparentControl(controlBitmap, new Point(200, 10)); this.transparentControl.Name = "Close"; this.transparentControl.MouseClick += new MouseEventHandler(this.TransparentControl_MouseClick); Bitmap bitmap_2 = new Bitmap(@"E:\Project\Visual Studio\C#.Net\Saved Project\0 Important Project\Poshtibangir Tolo\PoshtibangirTolo\bin\Debug\Icon\PanelToolBar\Setting\Setting.png"); TransparentControlBitmap controlBitmap_2 = new TransparentControlBitmap(bitmap_2); controlBitmap_2.MouseEnterBitmap = TransparentControlBitmap.SetColor(bitmap_2, Color.DeepSkyBlue); controlBitmap_2.MouseDownBitmap = TransparentControlBitmap.SetColor(bitmap_2, Color.Blue); controlBitmap_2.ControlDisabledBitmap = TransparentControlBitmap.SetColor(bitmap_2, Color.Yellow); this.transparentControl_2 = new TransparentControl(controlBitmap_2, new Point(210, 20)); this.transparentControl_2.Name = "Setting"; this.transparentControl_2.MouseClick += new MouseEventHandler(this.TransparentControl_MouseClick); this.Controls.Add(transparentControl); this.Controls.Add(transparentControl_2); }
چرا این جوری هه؟
من که به ترتیب invalidate میکنم ولی این چرا BackgroundControls را سر آخر رسم میکنه؟
برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط ravegoat برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
خیلی ممنون






پاسخ با نقل قول
Bookmarks