Speed Racer (22-08-19)
سلامی مجدد
آخرین تغییراتی که دادم را فایل این کلاس را در زیر میذارم.
الان مشکلش اینه که وقتی پروپرتی TextAutoSize از کلاس TransparentControl را تغییر میدم ، متن ای که رسم میکنه ، وقتی موس را روی این کنترل میبریم ، ضخیم رسم میکنه . دلیل شو گشتم ، ولی پیدا نکردم . کسی میدونه راهنمایی کنه؟
الان این کد زیر ، اشکالی که در بالا توضیح دادم را نمایان میکنه (اول روی دکمه ی AutoSize ، کلیک راست کنید و به متن کنترل TransparentControl هم دقت کنید که خواهید دید کمی ضخیم تر میشه . اگه فرم را مینیمایز و بعد به حالت اولیه اش برگردونید ، متن ، نازک میشه. اگه دوباره این کاری که گفتم را انجام بدین یا موس را روی کنترل ببرید ، متن ، ضخیم تر میشه) :
کد:private void Form1_Load(object sender, EventArgs e) { Button btnAutoSize = new Button { Bounds = new Rectangle(10, 10, 100, 35), Parent = this, Text = "AutoSize", BackColor = Color.WhiteSmoke }; btnAutoSize.MouseUp += new MouseEventHandler(this.Button3_MouseUp); TransparentControlText text = new TransparentControlText("salam"); this.transparentControl = new TransparentControl(text, new Rectangle(new Point(100, 200), new Size(250, 100)), false); this.Controls.Add(this.transparentControl); } private void Button3_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) this.transparentControl.TextAutoSize = false; else if (e.Button == MouseButtons.Right) this.transparentControl.TextAutoSize = true; }
دانلود آخرین تغییرات فایل TransparentControl :
https://8pic.ir/uploads/TransparentControl_bc65d.rar
با تشکر برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
فیلم آموزش کامل Autoplay Media Studio
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
Speed Racer (22-08-19)
سلامی مجدد
انگار حدودا ، بهتر پیدا کردم که مشکل از کجاست (اما هنوز دقیق متوجه نشدم) .
مشکل انگار از کدهای تغییر سایز در TransparentControl هست . ربطی به TransparentControlText نداره.
مثلا کدهای زیر ، مشکلی ندارن (این کد ، رویداد Button3_MouseUp در کد بالاست که تغییر کرده) (برای آپدیت و رسم ، بعد از کلیک روی دکمه ، موس را روی کنترل TransparentControl ببرید) :
یاکد:private void Button3_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) this.transparentControl.TransparentControlText.Text = "salam"; else if (e.Button == MouseButtons.Right) this.transparentControl.TransparentControlText.Text = "khobi?"; }
اما این کد مشکل داره :کد:private void Button3_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) this.transparentControl.TransparentControlText.TextFont = this.Font; else if (e.Button == MouseButtons.Right) this.transparentControl.TransparentControlText.Text = "khobi?"; }
حالا داخل کلاس TransparentControlText مشکل خودش را نشون میده چون داخل رویداد TransparentControl_TextAutoSizeChanged ، کدِ this.TransparentControl.Size = fontSize.ToSize() را بکار بردم.کد:private void Button3_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) this.transparentControl.Size = new Size(250, 100); else if (e.Button == MouseButtons.Right) this.transparentControl.Size = new Size(180, 70); }
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
فیلم آموزش کامل Autoplay Media Studio
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
Speed Racer (26-08-19)
سلامی مجدد
مشکل یافت شد. بخاطر این بود که داخل رویداد AllParents_Invalidated ، وقتی جابجایی یا تغییر اندازه صورت میگرفت ، متد InvalidateBackgroundsAndThisControl ، دو بار اجرا میشد. چون هر بار که این تابع اجرا میشه ، به کنترل والدش کاری نداره و کنترل والدش را invalidate نمیکنه.
بنابراین ، کد این رویداد را به زیر تغییر دادم و درست شد :
کد:private void AllParents_Invalidated(object sender, InvalidateEventArgs e) { // در این قسمت ، عمل Invalidate کردن یا همون رسم کردن کنترل TransparentControl را فقط روی اون کنترلی انجام میده که عملیات موس روی اون کنترل انجام گرفته باشه . // همچنین اگه مکان کنترل جاری مون تغییر کنه ، همون کنترل رسم میشه. if (this.Equals(TransparentControl.TranspControlEventDoingFlag) == true || this.IsLocationChangeDoingFlag == true) this.InvalidateBackgroundsAndThisControl(); }
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
فیلم آموزش کامل Autoplay Media Studio
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
ravegoat (26-08-19), Speed Racer (26-08-19)
1 کاربر در حال مشاهده این موضوع. (0 عضو و 1 میهمان)
Bookmarks